Advertisement
l1von

ы

Jun 9th, 2021
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.40 KB | None | 0 0
  1. import logging
  2. from aiogram import Bot, Dispatcher, executor, types
  3. from config import API_TOKEN, admin
  4. import keyboard as kb
  5. import functions as func
  6. import sqlite3
  7. from aiogram.contrib.fsm_storage.memory import MemoryStorage
  8. from aiogram.dispatcher import FSMContext
  9. from aiogram.dispatcher.filters import Text
  10. from aiogram.dispatcher.filters.state import State, StatesGroup
  11.  
  12. storage = MemoryStorage()
  13. logging.basicConfig(level=logging.INFO)
  14. bot = Bot(token=API_TOKEN)
  15. dp = Dispatcher(bot, storage=storage)
  16. connection = sqlite3.connect('data.db')
  17. q = connection.cursor()
  18.  
  19. class st(StatesGroup):
  20.     item = State()
  21.     item2 = State()
  22.     item3 = State()
  23.     item4 = State()
  24.  
  25. @dp.message_handler(commands=['start'])
  26. async def start(message: types.Message):
  27.     func.join(chat_id=message.chat.id)
  28.     q.execute(f"SELECT block FROM users WHERE user_id = {message.chat.id}")
  29.     result = q.fetchone()
  30.     if result[0] == 0:
  31.         if message.chat.id == admin:
  32.             await message.answer('Добро пожаловать, администратор.', reply_markup=kb.menu)
  33.         else:
  34.             await message.answer('Приветствую, это бот-саппорт.\nНапиши мне свой вопрос и я отправлю его администрации.\nЗа спам/флуд - ЧС!')
  35.     else:
  36.         await message.answer('Ваш аккаунт заблокирован в данном боте.')
  37.  
  38.  
  39. @dp.message_handler(content_types=['text'])
  40. async def handler(message: types.Message, state: FSMContext):
  41.     func.join(chat_id=message.chat.id)
  42.     q.execute(f"SELECT block FROM users WHERE user_id = {message.chat.id}")
  43.     result = q.fetchone()
  44.     if result[0] == 0:
  45.         if message.chat.id == admin:
  46.             if message.text == 'Админка':
  47.                 await message.answer('Добро пожаловать в админ-панель.', reply_markup=kb.adm)
  48.             elif message.text == 'Назад':
  49.                 await message.answer('Добро пожаловать, администратор.', reply_markup=kb.menu)
  50.             elif message.text == 'ЧС':
  51.                 q.execute(f"SELECT * FROM users WHERE block == 1")
  52.                 result = q.fetchall()
  53.                 sl = []
  54.                 for index in result:
  55.                     i = index[0]
  56.                     sl.append(i)
  57.  
  58.                 ids = '\n'.join(map(str, sl))
  59.                 await message.answer(f'ID пользователей в ЧС:\n{ids}')
  60.             elif message.text == 'Добавить в ЧС':
  61.                 await message.answer('Введите id пользователя, которого нужно заблокировать.\nДля отмены нажмите кнопку ниже', reply_markup=kb.back)
  62.                 await st.item3.set()
  63.             elif message.text == 'Убрать из ЧС':
  64.                 await message.answer('Введите id пользователя, которого нужно разблокировать.\nДля отмены нажмите кнопку ниже', reply_markup=kb.back)
  65.                 await st.item4.set()
  66.             elif message.text == 'Рассылка':
  67.                 await message.answer('Введите текст для рассылки.\n\nДля отмены нажмите на кнопку ниже', reply_markup=kb.back)
  68.         else:
  69.             await message.answer('Сообщение отправлено.')
  70.             await bot.send_message(admin, f"<b>Получен новый вопрос!</b>\n<b>От:</b> {message.from_user.mention}\n<b>Сообщение:</b> {message.text}", reply_markup=kb.quest, parse_mode='HTML')
  71.             ids = message.chat.id
  72.             await state.update_data(idsh=ids)
  73.     else:
  74.         await message.answer('Ваш аккаунт заблокирован в данном боте.')
  75.  
  76. @dp.callback_query_handler(lambda call: True) # Inline часть
  77. async def cal(call, state: FSMContext):
  78.     if call.data == 'ans':
  79.         await call.message.answer('Введите ответ пользователю:', reply_markup=kb.back)
  80.         await st.item2.set()
  81.  
  82. @dp.message_handler(state=st.item2)
  83. async def proc(message: types.Message, state: FSMContext):
  84.     if message.text == 'Отмена':
  85.         await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.menu)
  86.         await state.finish()
  87.     else:
  88.         await message.answer('Сообщение отправлено.', reply_markup=kb.menu)
  89.         data = await state.get_data()
  90.         id = data.get("idsh")
  91.         print(id)
  92.         await state.finish()
  93.  
  94. @dp.message_handler(state=st.item)
  95. async def process_name(message: types.Message, state: FSMContext):
  96.     q.execute(f'SELECT user_id FROM users')
  97.     row = q.fetchall()
  98.     connection.commit()
  99.     text = message.text
  100.     if message.text == 'Отмена':
  101.         await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.adm)
  102.         await state.finish()
  103.     else:
  104.         info = row
  105.         await message.answer('Рассылка начата!', reply_markup=kb.adm)
  106.         for i in range(len(info)):
  107.             try:
  108.                 await bot.send_message(info[i][0], str(text))
  109.             except:
  110.                 pass
  111.         await message.answer('Рассылка завершена!', reply_markup=kb.adm)
  112.         await state.finish()
  113.  
  114.  
  115. @dp.message_handler(state=st.item3)
  116. async def proc(message: types.Message, state: FSMContext):
  117.     if message.text == 'Отмена':
  118.         await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.adm)
  119.         await state.finish()
  120.     else:
  121.         if message.text.isdigit():
  122.             q.execute(f"SELECT block FROM users WHERE user_id = {message.text}")
  123.             result = q.fetchall()
  124.             connection.commit()
  125.             if len(result) == 0:
  126.                 await message.answer('Такой пользователь не найден в базе данных.', reply_markup=kb.adm)
  127.                 await state.finish()
  128.             else:
  129.                 a = result[0]
  130.                 id = a[0]
  131.                 if id == 0:
  132.                     q.execute(f"UPDATE users SET block = 1 WHERE user_id = {message.text}")
  133.                     connection.commit()
  134.                     await message.answer('Пользователь успешно заблокирован.', reply_markup=kb.adm)
  135.                     await bot.send_message(message.text, 'Вы были заблокированы администрацией.')
  136.                     await state.finish()
  137.                 else:
  138.                     await message.answer('Данный пользователь уже имеет блокировку.', reply_markup=kb.adm)
  139.                     await state.finish()
  140.         else:
  141.             await message.answer('Ты вводишь буквы...\nВведи ID')
  142.  
  143. @dp.message_handler(state=st.item4)
  144. async def proc(message: types.Message, state: FSMContext):
  145.     if message.text == 'Отмена':
  146.         await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.adm)
  147.         await state.finish()
  148.     else:
  149.         if message.text.isdigit():
  150.             q.execute(f"SELECT block FROM users WHERE user_id = {message.text}")
  151.             result = q.fetchall()
  152.             connection.commit()
  153.             if len(result) == 0:
  154.                 await message.answer('Такой пользователь не найден в базе данных.', reply_markup=kb.adm)
  155.                 await state.finish()
  156.             else:
  157.                 a = result[0]
  158.                 id = a[0]
  159.                 if id == 1:
  160.                     q.execute(f"UPDATE users SET block = 0 WHERE user_id = {message.text}")
  161.                     connection.commit()
  162.                     await message.answer('Пользователь успешно разбанен.', reply_markup=kb.adm)
  163.                     await bot.send_message(message.text, 'Вы были разблокированы администрацией.')
  164.                     await state.finish()
  165.                 else:
  166.                     await message.answer('Данный пользователь не заблокирован.', reply_markup=kb.adm)
  167.                     await state.finish()
  168.         else:
  169.             await message.answer('Ты вводишь буквы...\nВведи ID')
  170.  
  171. if __name__ == '__main__':
  172.     executor.start_polling(dp, skip_updates=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement