Skip to content

Instantly share code, notes, and snippets.

@nOy39
Last active June 10, 2018 12:19
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nOy39/8da04676eb08cb00a3dbdf3e24bc8385 to your computer and use it in GitHub Desktop.
Save nOy39/8da04676eb08cb00a3dbdf3e24bc8385 to your computer and use it in GitHub Desktop.
Бот сохраняет вопросы задаваемые пользователями канала в БД, и при обращении к нему выдает список вопросов, при ответе на них у задающего
вопрос будет возможность установить сатус вопрос решен, он будет сохранен в БД, и затем можно будет обратиться к этому вопросу
и посмотреть его решение, также это добавляет к карме отвечающего, и возможно дает ему какие-нибудь ачивки.
Бот сохраняет каждого пользователя в свою базу, при написании своего первого сообщения пользователя в чат.
В телеграмме пользователи могут менять имя, фамилию, юзернейм, т.е. может получиться что пользователь для бота будет новым чуваком,
поэтому во всех операциях сравнения, поиска и обращений к бд где указывается пользователь, за ключ берется telegram.user.id.
он уникальный. Также если юзер меняет свой ник, имя, фамилию то бот в фоне обновит эти данные в таблице.
все вопросы записываются в БД только если перед вопросом стоит условный #ТЭГ вопроса, вопрос записывается в базу со статусом не решенный и
в поле user_id пишется пользователь который его задал, вопрос может быть забанен, и тогда автор вопроса получит минус к своей карме.
Ответы на вопросы записываются просто перехватом reply сообщений в теле которых есть вопрос из бд.
Ответов на один вопрос может быть много, подходящий ответ выберет автор вопроса сам, нажав условную кнопку "МНЕ ЭТО ПОДХОДИТ",
#вопрос Неработает метод, вываливается ошибка бля помогите. ТЕкст всякий дребедень, еще маленько букв
потом какая нибудь страка из стек-трейса, вот эта например
ava.lang.NullPointerException: null
at org.a2lpo.letsCodeBot.components.Bot.onUpdateReceived(Bot.java:70) ~[classes/:na]
at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_172]
at org.telegram.telegrambots.generics.LongPollingBot.onUpdatesReceived(LongPollingBot.java:27) ~[telegrambots-meta-3.5.jar:na]
at org.telegram.telegrambots.updatesreceivers.DefaultBotSession$HandlerThread.run(DefaultBotSession.java:306) ~[telegrambots-3.5.jar:na]
еще ссылку въебем для красоты сообщения
https://gist.github.com/nOy39/8da04676eb08cb00a3dbdf3e24bc8385/edit
вот типа такого)))). ПАМАГИТЕ ЛЮДИ ДОБРЫЕ!
Резюме:
Так как Андрей не уточнял какого бота создавать я взял бота longPollingBots.
А также я решил внедрить его в Spring-Boot, чтобы в дальнейшем побаловавшись с ним в меру
внедрить своего бота в свое веб-приложение)))
Я форкнул Репозиторий: https://github.com/drucoder/letsCodeBot и выгружаю свои коммиты в
https://github.com/nOy39/letsCodeBot/tree/user_questions каждый день, примерно в 19:00 МСК
Сам бот называется @alpo_jbot, создал свою группу для теста https://t.me/joinchat/FH6tOQ4nXFKmU4UcuoliUw
Сейчас бот крутиться на herouku деплой на него я делаю по вечерерам, по-этому все изменения в работе бота будут после 19-00
20-00 МСК, в ближайшее время задеплою его на свой vps сервер.
messageText = "Привет, ты пишешь всякого разного рода сообщения, но они теряется в общем чате?\uD83D\uDD0D \n" +
"Я готов тебе помочь с этим, я могу сохранить твой вопрос.\uD83D\uDCDD \n" +
"После этого каждый желающий сможет его посмотреть, не роясь в дебрях истории.\uD83D\uDCA1 \n" +
" Правда для этого ты должен будешь выполнить несколько моих условий:\n" +
"<b>1.</b> Для того чтобы я мог различать твое обычное общение от вопроса к сообществу," +
"твой вопрос должен начинаться с тега: <code>#вопрос</code> <em>ПРОБЛЕМЫ...</em> .\n" +
"<b>2.</b> Твой вопрос должен содержать более <b>50</b> символов. менее 50 сиволов вопросы вот <a href=\"http://www.google.com/\">сюда.</a>\n " +
"<b>3.</b> Так как вопросов может оказаться очень много, я не хочу вываливать портянку все вопросов, чтобы засорять экраны пользователей.\n" +
"Я буду отображать вопросы по заголовкам. Отсюда вытекает 4 правило." +
"<b>4.</b> Не начинай свой вопрос <em>ПАМАГИТЕ!!!</em>,\n<em>ПРОБЛЕМЫ...</em>\n<em>2018-06-06 19:21:09.506 ERROR 15928 --- [nio-8080-exec-8]</em>\n" +
" прояви уважения к людям которые тебе будут помогать в решении твоей проблемы, начни свой вопрос так," +
" чтобы люди увидели по заголовку твоего вопроса какого рода у тебя проблема." +
"Пример: <em>Ошибка NullPointerException в методе</em>,<em>Проблема с БД Postgres</em>\n" +
"<b>5.</b> Никогда не выкладывай сюда 'портянки' логов или кода, не поленись выложить это в <a href=\"https://gist.github.com/\">Gist.</a> и добавить в свой вопрос ссылку.\n" +
"<b>6.</b> Отблагодари автора ответа, чей ответ тебе помог.\n" +
"<b>7.</b> Если знаешь ответ на чей то вопрос, или просто хочешь помочь в решении, ведь иногда коллективно решаются проблемы," +
"просто цитируй вопрос, я сам их отсортирую для дальнейшего отображения.";
Вопросы принимаются в текстовом виде, загрузку изображений прикрепленных к определенному вопросу, пока реализовать не могу.
Ни какой веб морды на данный момент для бота я не делаю.
@nOy39
Copy link
Author

nOy39 commented Jun 8, 2018

ушёл смотреть игру престолов...

@nOy39
Copy link
Author

nOy39 commented Jun 10, 2018

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment