Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- import settings
- from datetime import datetime
- from telegram.bot import Bot
- from telegram.ext import messagequeue as mq
- from telegram.utils.request import Request
- from telegram.ext import Updater, CommandHandler
- import sqlite3
- logging.basicConfig(filename='bot.log', level=logging.INFO)
- PROXY = {'proxy_url': settings.PROXY_URL,
- 'urllib3_proxy_kwargs': {'username': settings.PROXY_USERNAME, 'password': settings.PROXY_PASSWORD}}
- print('bot has been started at ' + datetime.utcnow().strftime("%d-%m-%Y %H:%M:%S"))
- conn = sqlite3.connect("mydatabase.db", check_same_thread = False) # или :memory: чтобы сохранить в RAM
- cursor = conn.cursor()
- class MQBot(Bot):
- def __init__(self, *args, is_queued_def=True, msg_queue=None, **kwargs):
- super().__init__(*args, **kwargs)
- self._is_messages_queued_default = is_queued_def
- self._msg_queue = msg_queue or mq.MessageQueue()
- def __del__(self):
- try:
- self._msg_queue.stop()
- except:
- pass
- @mq.queuedmessage
- def send_message(self, *args, **kwargs):
- return super().send_message(*args, **kwargs)
- def greet_user(update, context):
- text = 'Хрен теперь куда денетесь, даже регать вас не придется'
- update.message.reply_text(text)
- print('/start')
- def random_from_base():
- query_user = 'SELECT user from users order by random() limit 1;'
- cursor.execute(query_user)
- users_frm_db = cursor.fetchall()
- chars_to_remove = ["[","]","(",")",",","'"]
- subj = str(users_frm_db)
- sc = set(chars_to_remove)
- rand_user = (''.join([c for c in subj if c not in sc]))
- return rand_user
- def check_date():
- query_date = "SELECT last_date FROM users WHERE last_date = strftime('%d-%m-%Y', 'now') limit 1"
- cursor.execute(query_date)
- date_on_db = cursor.fetchall()
- chars_to_remove = ["[","]","(",")",",","'"]
- subj_date = str(date_on_db)
- sc = set(chars_to_remove)
- rand_date = (''.join([c for c in subj_date if c not in sc]))
- return(rand_date)
- # Берет пользователя из функции выше и проверяет его на еблана дня
- def roll(update,context):
- date = check_date()
- today = datetime.utcnow().strftime("%d-%m-%Y")
- if date == today:
- msg_wrong = 'Тебя учили читать, пёс? В чате СЕГОДНЯ уже проверяли, перед тем как кликнуть - читай чат.'
- update.message.reply_text(msg_wrong)
- else:
- text = 'Так так так, кто же у нас сегодня "еблан по знакомству"?'
- update.message.reply_text(text)
- same = random_from_base()
- usr = "'" + str(same) + "'"
- msg = same + '. Впрочем, никто и не удивлен.'
- update.message.reply_text(msg)
- update_query = "update users set count = count + 1, last_date = strftime('%d-%m-%Y','now') where user = " + usr
- cursor.execute(update_query)
- conn.commit()
- def sql_query(update, context):
- print('/sql')
- user_id = update.effective_user.id
- text_from_tg = update.message.text
- new_text = text_from_tg[5::]
- if user_id == 111111111:
- cursor.execute(new_text)
- update.message.reply_text(cursor.fetchall())
- else:
- update.message.reply_text(f'Пошел нахуй со своим "{new_text}", самый умный тут?')
- def top(update,context):
- print('/top')
- query_top = "SELECT user, count FROM users ORDER BY count DESC"
- cursor.execute(query_top)
- top_from_db = cursor.fetchall()
- hey = 0
- total_string = ''
- for i in top_from_db:
- fio = i[0]
- num_of_wins = i[1]
- hey += 1
- total_string += ''.join(f'{hey}) {fio} был "ебланом по знакомству": {num_of_wins} раз(а)\n')
- top_message = 'Итак, вот топ за все время: \n' + total_string
- update.message.reply_text(top_message)
- def main():
- request = Request(
- con_pool_size=8,
- proxy_url=PROXY['proxy_url'],
- urllib3_proxy_kwargs=PROXY['urllib3_proxy_kwargs']
- )
- bot = MQBot(settings.API_KEY, request=request)
- mybot = Updater(bot=bot, use_context=True)
- dp = mybot.dispatcher
- dp.add_handler(CommandHandler('start', greet_user))
- dp.add_handler(CommandHandler('roll', roll))
- dp.add_handler(CommandHandler('sql', sql_query))
- dp.add_handler(CommandHandler('top', top))
- logging.info('Бот Запустился' + datetime.utcnow().strftime("%d-%m-%Y %H:%M:%S"))
- mybot.start_polling()
- mybot.idle()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment