Сообщество - ИТ-проекты пикабушников

ИТ-проекты пикабушников

592 поста 3 428 подписчиков

Популярные теги в сообществе:

18

Искусственный интеллект в помощь юристам: бот, который знает кодексы РФ

Приветствую всех!
Мой бот, посвящённый Конституции РФ, набрал более 10 тысяч просмотров на Пикабу и привлёк внимание свыше 1000 пользователей. Такой интерес стал отличным стимулом двигаться дальше!

https://t.me/ru_codex_bot

Я решил не останавливаться на достигнутом и создал новую версию бота, который теперь объединяет все кодексы Российской Федерации и предлагает невероятно удобный функционал.

На данный момент добавлены "Уголовный", "Налоговый" и "Трудовой" кодексы.

Возможности бота

Самое главное новшество — это интеграция нейросети, которая способна отвечать на вопросы, связанные с законодательством РФ.

Вы можете задавать вопросы на языке профессионала, например так...

А можете задать вопрос описывая свою проблему со стороны «обывателя», например так «Меня хотят уволить без выплаты отпускных. Какой статьёй закона я могу аппелировать в данном вопросе?»

Нейросеть не только поможет найти ответ, но и предоставит ссылки на соответствующие статьи, чтобы вы могли сами проверить информацию.

Кому полезен бот?

Мой бот создавался с мыслью о том, чтобы сделать законодательство более доступным для всех. Вот почему он может быть полезен:

  1. Юристам и студентам. Если вы изучаете законодательство, бот станет удобным помощником, который быстро найдёт нужные статьи или поможет подготовиться к экзаменам.

  2. Обычным людям. Даже без юридического опыта вы сможете задать вопрос в свободной форме и получить понятный ответ.

  3. Профессионалам. Если ваша работа связана с законами, бот поможет сохранить важные материалы в избранное и облегчит доступ к ним.

Юридическая грамотность — это не привилегия, а необходимость. И я рад, что с помощью нейросети можно сделать её доступной каждому.

Что важно знать?

Я продолжаю развивать проект, добавлять новые кодексы и совершенствовать ответы нейросети. Первая версия может не всегда быть идеальной, но я активно работаю над её улучшением.

Я проделал большую работу по созданию данного бота и наполнению его материалом. Надеюсь, что этот бот станет вашим надёжным помощником и облегчит взаимодействие с законами.

Спасибо всем, кто уже поддержал проект! Ваши отзывы и идеи помогают делать его лучше.

Показать полностью 2
3

Как АИ Гугла умеет матом ругаться. (fixed)

https://g.co/gemini/share/29c5b2a28b6c

Предупреждение! Данная ссылка содержит множество нецензурных, оскорбительных, расистских высказываний и не является безопасной для просмотра. Данный чат является примером применения джейлбрейка 'Давай поиграем в игру' и предоставляется исключительно в образовательных целях, дабы уберечь пользователей от повторения подобного опыта. Запрещено использовать любые цитаты/выражения, найденные по данной ссылке. Посещая данную ссылку, вы даёте согласие что вам уже исполнился 21 год и вы не будете применять, передавать или цитировать информацию из данного источника.

Данная уязвимость была сообщена куда следует и уже не является актуальной.

Я создал Telegram-бота (FYTT), который ищет Telegram-каналы всех ваших подписок на YouTube

Идея создания бота пришла после замедления YouTube в России. Многие блогеры стали активно призывать подписчиков переходить в Telegram, чтобы не потерять связь с аудиторией. Я решил сделать удобный инструмент для быстрого поиска Telegram-каналов любимых авторов.

Что я использовал?

Поскольку опыта в разработке у меня было мало, я выбрал следующий стек технологий:

  • Node.js с библиотекой telegraf.js для работы с Telegram API

  • MongoDB и mongoose для работы с базой данных

  • Express.js для создания веб-сервера

  • Google API для работы с YouTube

  • Lemnos API для получения дополнительной информации о каналах

Реализация

1. Основные команды бота

Начнем с главной команды /start, которая инициализирует работу с ботом:

bot.start(async (ctx) => {

const chatId = ctx.chat.id;

let chat = await Analytics.findOne({ chatId: chatId })

// Создаем новую запись пользователя, если его нет в базе

if (chat === null) {

try {

let username = ctx.message.chat.username

let newChat = new Analytics({

chatId: ctx.message.chat.id,

username: username,

awatingChannels: true,

status: "member",

count: 0

})

await newChat.save()

} catch {

// Если username недоступен, используем first_name

let newChat = new Analytics({

chatId: ctx.message.chat.id,

username: ctx.message.chat.first_name,

awatingChannels: true,

status: "member",

count: 0

})

await newChat.save()

}

} else {

chat.awatingChannels = true

await chat.save()

}

// Отправляем приветственное сообщение с кнопками

await setBotCommands()

ctx.replyWithHTML(

'<b>Приветствуем вас в нашем сервисе поиска Telegram-каналов ютуберов!</b>\n' +

'Бот безопасен, так как представляет собой открытый исходный код, ' +

'который может посмотреть каждый желающий. (/faq или пишите @vitosperansky)\n\n' +

'Поддержать проект: https://www.donationalerts.com/r/vitosperansky\n\n' +

'Выберите опцию:',

Markup.inlineKeyboard([

[Markup.button.callback('Найти YouTube-каналы в Telegram', 'find_channels')],

[Markup.button.callback('Связать YouTube-канал с Telegram-каналом', 'link_channel')]

]), {

disable_web_page_preview: true

}

);

});

2. Авторизация через Google

Для работы с YouTube API необходима авторизация через Google. Вот как реализована генерация URL для авторизации:

async function generateAuthUrl(chatId) {

const credentials = JSON.parse(fs.readFileSync(CREDENTIALS_PATH));

const { client_id, client_secret } = credentials.web;

const oAuth2Client = new OAuth2Client(

client_id,

client_secret,

REDIRECT_URL

);

const authUrl = oAuth2Client.generateAuthUrl({

access_type: 'online',

scope: SCOPES,

state: chatId.toString()

});

return authUrl;

}

Когда пользователь нажимает на кнопку поиска каналов, запускается следующий обработчик:

const find_channels = async (ctx) =&gt; {

const chatId = ctx.chat.id;

const authUrl = await generateAuthUrl(chatId, ctx);

ctx.replyWithMarkdown(

'*Нажмите кнопку ниже для авторизации на Youtube и получения списка ваших подписок:*\n\n' +

'❗Авторизация нужна только для получения списка ваших подписок ' +

'(запрашиваются права youtube.readonly - только чтения, подробнее /faq)❗\n\n' +

'_Процесс займет время: ~50 секунд. (в зависимости от количества ваших подписок)_',

{

reply_markup: {

inline_keyboard: [

[{ text: 'Авторизоваться и найти подписки', url: authUrl }]

]

}

}

);

};

// Обработчики команды поиска каналов

bot.action('find_channels', async (ctx) =&gt; {

ctx.answerCbQuery();

await find_channels(ctx)

})

bot.command('find_channels', async (ctx) =&gt; {

await find_channels(ctx)

})

3. Дополнительные команды

Бот также имеет несколько дополнительных команд для удобства использования:

// Команда FAQ

bot.command('faq', async (ctx) =&gt; {

ctx.replyWithMarkdown(`

**Ответы на вопросы о проекте:**

Какова цель проекта?

— Максимально упростить поиск Телеграмм каналов ваших любимых авторов.

У меня не украдут Google Аккаунт?

— Нет, бот имеет открытый исходный код, который может посмотреть каждый желающий на Github - https://github.com/VitoSperansky/FromYoutubeToTelegram.

Как работает бот?

— Бот просит вас авторизоваться в свой Google аккаунт, чтобы получить список ваших подписок на YouTube.

Затем система обращается к своей базе данных, где хранятся соответствия YouTube-каналов и их Телеграмм-каналов.

Если бот находит соответствия в базе данных, он записывает их в список найденных каналов.

Если YouTube-каналы, на которые вы подписаны, отсутствуют в нашей базе данных, бот отправляет запрос

в YouTube на получение ссылок социальных сетей, привязанных к каналу. Среди этих ссылок бот ищет

ссылку на Телеграмм. Найдя новую ссылку на Телеграмм-канал, бот добавляет её в базу данных.

В итоге, пользователь получает список YouTube-каналов с их Телеграмм-каналами.

Остались вопросы? - Пишите @vitosperansky

`);

});

// Команда для рассылки сообщений (только для администратора)

bot.command('send', async (ctx) =&gt; {

if (ctx.message.chat.id == MODERATOR_CHAT_ID) {

let chatId = ctx.message.text.replace('/send ', '').replace(/ [\s\S]+/, '');

let text = ctx.message.text.replace('/send ', '').replace(`${chatId} `, '').toString();

if(chatId === 'all') {

let Users = await Analytics.find()

let goodSend = [];

let badSend = [];

ctx.reply("Рассылка началась.")

for (let i = 0; i &lt; Users.length; i++) {

try {

await bot.telegram.sendMessage(Users[i].chatId, text, { parse_mode: "HTML" });

goodSend.push(Users[i]);

} catch (error) {

badSend.push(Users[i]);

}

}

ctx.reply(`Рассылка завершена\n\nУспешно отправлено: ${goodSend.length} сообщений.\n` +

`Не получилось отправить: ${badSend.length} сообщений.`)

} else {

try {

await bot.telegram.sendMessage(chatId, text, { parse_mode: "HTML" });

ctx.reply(`Сообщение успешно отправлено пользователю. \n\nChatId: ${chatId}\nТекст: ${text}`)

} catch {

ctx.reply("Ошибка при отправке сообщения.")

}

}

} else {

ctx.reply("Вы не админ!")

}

});

Проблемы и их решения

1. Проблема дублирования запросов

При авторизации в Google-аккаунте возникла проблема с дублированием запросов, если у пользователя несколько аккаунтов. Для решения этой проблемы я использовал флаг awaitingChannels в базе данных, который позволяет отслеживать состояние запроса и избегать дублирования.

2. Ограничение длины сообщений

В первых версиях бот пытался отправить все найденные каналы одним сообщением, но столкнулся с ограничением Telegram на длину сообщения. Решение было простым - разбить информацию на несколько сообщений. (присылать txt файлом к примеру не совсем верно, ведь тогда теряется легкость в переходе на телеграм канал).

3. Сайт

Сайт работает на порту 3000 (fytt.tech:3000, что не совсем стандартно для веб-приложений. Это связано с тем, что порты ниже 1024 по умолчанию закрыты для установки серверов из соображений безопасности. В идеале следовало бы настроить переадресацию с порта 443 (стандартный HTTPS порт) с помощью инструмента вроде ngrok, но поскольку сайт служит в основном для верификации Google, эта задача была отложена.

Процесс верификации Google

Получение доступа к YouTube API потребовало пройти верификацию Google. Процесс включал несколько этапов:

  1. Создание логотипа: Первая версия логотипа была отклонена из-за слишком явного использования элементов YouTube и Telegram. Пришлось создать более оригинальный дизайн.

    1 версия - отклонена (кто-то увидел тут силуэт лица человека xD)2 версия — принято (на фоне текст fromyoutubetotelegram)
  2. Разработка сайта: Потребовалось создать сайт с политикой конфиденциальности и пользовательским соглашением. При этом возникли следующие требования:

    • Необходимость владения доменом

    • Настройка SSL-сертификатов через certbot

    • Корректная политика конфиденциальности

  3. Демонстрация работы: Создание демо-видео для показа функционала бота. (пришлось им видео записать под смешную музыку)

Продвижение проекта

Потом я решил продвинуть бота и записал два смешных shorts:

  • https://youtu.be/MlXEUIDBhE0 — Speech to speech моей записи на ии оригинального голоса Рика из Рика и Морти (сделал на этом сайте).

Полезные ссылки

Планы на будущее

  1. Улучшение алгоритма поиска каналов

  2. Оптимизация работы с базой данных

  3. Добавление новых функций по запросам пользователей

  4. Настройка правильной маршрутизации портов на сервере

Заключение

Проект показал, что даже с минимальным опытом разработки можно создать полезный инструмент, который решает реальную проблему пользователей. Открытый исходный код и прозрачность работы позволили завоевать доверие пользователей, а интеграция с популярными платформами обеспечила удобство использования.

Показать полностью 2
5

Как использовать Telegram-стикеры на Пикабу

Сделал плагин для Google Chrome, c помощью которого можно пользоваться стикерами на Pikabu, ВК и любых других сайтах.

Печенька в ответе была перенесена мышкой с боковой панели.

Печенька в ответе была перенесена мышкой с боковой панели.

Всё просто: установив плагин нужно нажать на его иконку, после чего откроется боковая панель, на которой можно искать стикеры, добавлять их в избранное и отправлять в обсуждения.

Отправлять можно как ссылку на стикер, так и само изображение. Для этого нужно нажать правой кнопкой мыши по понравившейся картинке и выбрать нужный пункт меню. Также стикер можно просто перетащить мышкой в поле для ответа на сайте.

Пользуйтесь ) Жду отзывы и предложения.

P.S. Если зайдёт, то дальше можно будет сделать и под другие браузеры.

Показать полностью

Помидоро или Pomodoro? 2 \ n

Всем привет! Мой марафон простых программ продолжается.

Напоминаю суть: 20 - 30 дней = 20 - 30 простых, полезных программ на клиенте тобишь в браузере. Сегодня второй день и вторая приложенька.

В предыдущий генератор паролей меня попросили добавить опцию “Запоминающиеся пароли” и этот алгоритм отожрал приличное время от текущей таски, но всё же она готова. Pomodoro таймер.

Pomodoro – это метод управления временем, основанный на коротких циклах работы и отдыха для повышения продуктивности и фокуса.

красный сочный помодор

красный сочный помодор

В классическом варианте метод состоит из 25-минутного рабочего блока, называемого "помидоркой", после которого следует короткий перерыв на 5 минут. Каждый четвертый цикл заканчивается более продолжительным отдыхом, обычно на 15-30 минут.

Суть подхода – сосредоточиться на одном задании и исключить любые отвлекающие факторы, а структурированные перерывы помогают избежать выгорания и сохраняют свежесть мышления.

Приложение выглядит достаточно просто поэтому попало в пул. Сам я им редко, но пользуюсь. Я посмотрел реализации и не могу однозначно сказать, какой полный функционал там должен был быть. Сделал так, как обычно пользуюсь сам, небольшой набор задач, чтобы перед глазами маячил + таймер. https://chatholder.ru/utils/pomodoro

Если вы регулярно пользуетесь помидорками, подскажите что имело бы смысл добавить. Только не абстрактные задачи =))

Показать полностью 1
5

Простой, удобный. Генератор паролей. 1 \ n

Привет, я Андрей, и я решил устроить себе челлендж — создавать и публиковать полезные сервисы, которые можно сделать максимум за пару дней. Думаю сделать 20 может быть 30 сервисов.

Начал с того, что сам использую. Буду рад фидбеку или идеям, какие ещё инструменты вам могли бы пригодиться. Сервисы делаю максимально простыми и понятными, чтобы они решали задачи и не захламляли интерфейс.

Простой, удобный. Генератор паролей. 1 \ n

Да, не каждый инструмент должен кричать «смотрите, у нас тут AI на всю голову!». Нафига впихивать ИИ туда, где нужна простая, быстрая функция? А еще нафига? Не все сервисы правильно создают форму для пароля на странице регистрации, из-за чего генератор паролей из браузера не работает.

Началось всё с генератора паролей. Я использую онлайн сервис генерации паролей. Но он мне визуально и функционально не нравится (но со своей простой задачей генерации паролей справляется на ура). Поэтому сделал свой — простой и удобный, визуально - нравится. Надеюсь и вам понравится! https://chatholder.ru/utils/password-generator

Один минус, такие сервисы ищутся по домену, а я их выкладываю на своём, может быть, когда-нибудь (ага!) перенесу их на отдельный.

Показать полностью 1
1

ТГ Бот который скачивает видео из браузера

Здравствуйте, я искал бота в телеграмме который скачивал бы мне видео из браузера. Есть много ботов которые скачиваю из Ютуба, ВК, ТТ , но мне нужны просто видосы которые выдает поисковик, видеоролики с различных сайтов

Для авто

Для авто

Вот придумал панель приборов автомобиля будущего. По бокам панели устроены дисплеи на которые выводятся изображение с выносных видеокамер. Видеокамеры расположены вместо боковых зеркал. Руль не закрывает обзор! Проверенно на прототипе. Это удобно и современно. В концепте для примера использована часть панели приборов от Шевроле Комаро. Жду соглашения для передачи авторских прав от ГАЗ, ЗАЗ, ЗИЛ, УАЗ, Acura, Adler, Alfa Romeo, Alpina, Aston Martin, Audi, Austin, Bentley, BMW, Bugatti, Buick, Cadillac, Chery, Chevrolet, Chrysler, Citroen, Dacia, Daihatsu, Daimler, Datsun, DeLorean, Dodge, Ferrari, Fiat, Ford, Geely, Genesis, GMC, GreatWall,
Haval, Honda, Hummer, Hyundai, Infiniti, Iran Khodro, Isuzu, Jaguar, Jeep, Kia, Koenigsegg, LADA (ВАЗ), Lamborghini, Lancia, Land Rover, Lexus, Lincoln, Lotus, Maserati, Maybach, Mazda, Mercedes-Benz, Mercury, MINI, Mitsubishi, Nissan, Noble, Oldsmobile, Opel, Peugeot, Plymouth, Pontiac, Porsche, Ravon, Renault, Rolls-Royce, Rover, Saab, SEAT, Skoda, Smart, SsangYong, Subaru, Suzuki, Tesla, Toyota, Volkswagen, Volvo, Zotye...

Показать полностью
Отличная работа, все прочитано!