Advertisement
dybun4uk

Untitled

Dec 15th, 2020
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. from aiogram.types import Message, CallbackQuery, ReplyKeyboardMarkup, KeyboardButton
  2. from aiogram.dispatcher.filters.state import State, StatesGroup
  3. from aiogram.dispatcher import FSMContext
  4. from aiogram.dispatcher.filters import Text
  5. from connection import dp, database_try_create
  6. from connection import database_query
  7. from connection import bot,storage
  8. from bot import bot, dp
  9. from config import ADMIN_ID
  10. from aiogram import types
  11. from fb import FEEDBACK_USER_ID
  12. from feedback import feedback_message
  13.  
  14.  
  15.  
  16. import logging
  17.  
  18. # States
  19. class BotStates(StatesGroup):
  20. started = State()
  21. picked_like = State()
  22. picked_unlike = State()
  23. send= State()
  24.  
  25.  
  26. open_kb = ReplyKeyboardMarkup(resize_keyboard=True,)
  27. open_kb.row('Пропозиція','Скарга','Інформація')
  28.  
  29. start_kb = ReplyKeyboardMarkup(resize_keyboard=True,)
  30. start_kb.row('Пропозиція', 'Скарга')
  31.  
  32.  
  33. cancel_kb = ReplyKeyboardMarkup(resize_keyboard=True,)
  34. cancel_kb.row('Отмена')
  35.  
  36.  
  37. async def send_to_admin(dp): # when bot is starting procedure
  38. await bot.send_message(chat_id=ADMIN_ID, text='Бот запущений')
  39.  
  40.  
  41. # starting bot when user sends `/start` command
  42. @dp.message_handler(commands=['start'])
  43. async def cmd_start(message: Message, ):
  44. await BotStates.started.set()
  45. await message.answer(f"Привіт!\n По якому питанню звертаєтесь?", reply_markup=open_kb )
  46.  
  47.  
  48. # cancel everything
  49. @dp.message_handler(state='*', commands='cancel')
  50. @dp.message_handler(Text(equals=['cancel', 'отмена'], ignore_case=True), state='*')
  51. async def cancel_handler(message: Message, state: FSMContext):
  52. current_state = await state.get_state()
  53. if current_state is None:
  54. return
  55.  
  56.  
  57. await BotStates.started.set()
  58. await message.answer('Отменено.', reply_markup=open_kb)
  59.  
  60. @dp.message_handler(commands='info')
  61. @dp.message_handler(Text(equals=['Інформація','info'],))
  62. async def get_help(message: Message,state):
  63. await BotStates.started.set()
  64.  
  65. await message.reply(f"Привіт!\n Використовуйте:\n /start - щоб залишити звертання!!! \n /help - щоб побачити це повідомлення!!!" , reply_markup=ReplyKeyboardRemove())
  66.  
  67. # picking weather or currency rate
  68. @dp.message_handler(state=BotStates.started)
  69. async def first_pick(message: Message, state: FSMContext):
  70. if message.text == 'Пропозиція':
  71. await BotStates.picked_like.set()
  72.  
  73.  
  74. await message.answer(f"У чому полягає {message.text} \n(пишіть все в одному повідомленні). ", reply_markup=cancel_kb)
  75. elif message.text == 'Скарга':
  76. await BotStates.picked_unlike.set()
  77. await message.answer(f"У чому полягає {message.text} \n(пишіть все в одному повідомленні). ", reply_markup=cancel_kb)
  78. else:
  79. await message.answer(f"Натисніть на потрібну для вас кнопку ")
  80.  
  81.  
  82. @dp.message_handler(commands=['ban'])
  83. async def banning(message: types.Message):
  84. if message.chat.id == FEEDBACK_USER_ID:
  85. units = database_query(f"SELECT user_id FROM messages WHERE message_id = {message.reply_to_message.message_id}")
  86. unit = units[0][0]
  87. some = database_query(f"SELECT user_id FROM blocked WHERE user_id = {unit}")
  88. resu = some
  89. print(resu)
  90. if not resu:
  91. database_query(f"INSERT INTO blocked(user_id) "
  92. f"VALUES('{unit}')")
  93. await message.answer(f"Ви заблокували {str(unit)}")
  94. await bot.send_message(unit,"Вас заблокували")
  95. @dp.message_handler(commands=['unban'])
  96. async def banning(message: types.Message):
  97. if message.chat.id == FEEDBACK_USER_ID:
  98. units = database_query(f"SELECT user_id FROM messages WHERE message_id = {message.reply_to_message.message_id}")
  99. unit = units[0][0]
  100. some = database_query(f"SELECT user_id FROM blocked WHERE user_id = {unit}")
  101. resu = some
  102. print(resu[0][0])
  103. if resu:
  104. try:
  105. database_query(f"DELETE FROM blocked WHERE user_id = {resu[0][0]}")
  106. await message.answer(f"Ви розблокували {str(resu[0][0])}")
  107. await bot.send_message(unit,"Вас розблокували")
  108. except Exception as e:
  109. print(str(e))
  110.  
  111. @dp.message_handler(lambda message: True, content_types=['text', 'photo', 'sticker', 'video', 'audio', 'voice', 'location', 'animation', 'contact', 'document'])
  112. async def feedback_message_event(message: types.Message):
  113. await BotStates.picked_like.set()
  114.  
  115. await feedback_message(message)
  116.  
  117. async def on_shutdown(dp):
  118. await bot.close()
  119. await storage.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement