Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- from aiogram import Bot, Dispatcher, executor, types
- from config import API_TOKEN, admin
- import keyboard as kb
- import functions as func
- import sqlite3
- from aiogram.contrib.fsm_storage.memory import MemoryStorage
- from aiogram.dispatcher import FSMContext
- from aiogram.dispatcher.filters import Text
- from aiogram.dispatcher.filters.state import State, StatesGroup
- storage = MemoryStorage()
- logging.basicConfig(level=logging.INFO)
- bot = Bot(token=API_TOKEN)
- dp = Dispatcher(bot, storage=storage)
- connection = sqlite3.connect('data.db')
- q = connection.cursor()
- class st(StatesGroup):
- item = State()
- item2 = State()
- item3 = State()
- item4 = State()
- @dp.message_handler(commands=['start'])
- async def start(message: types.Message):
- func.join(chat_id=message.chat.id)
- q.execute(f"SELECT block FROM users WHERE user_id = {message.chat.id}")
- result = q.fetchone()
- if result[0] == 0:
- if message.chat.id == admin:
- await message.answer('Добро пожаловать, администратор.', reply_markup=kb.menu)
- else:
- await message.answer('Приветствую, это бот-саппорт.\nНапиши мне свой вопрос и я отправлю его администрации.\nЗа спам/флуд - ЧС!')
- else:
- await message.answer('Ваш аккаунт заблокирован в данном боте.')
- @dp.message_handler(content_types=['text'])
- async def handler(message: types.Message, state: FSMContext):
- func.join(chat_id=message.chat.id)
- q.execute(f"SELECT block FROM users WHERE user_id = {message.chat.id}")
- result = q.fetchone()
- if result[0] == 0:
- if message.chat.id == admin:
- if message.text == 'Админка':
- await message.answer('Добро пожаловать в админ-панель.', reply_markup=kb.adm)
- elif message.text == 'Назад':
- await message.answer('Добро пожаловать, администратор.', reply_markup=kb.menu)
- elif message.text == 'ЧС':
- q.execute(f"SELECT * FROM users WHERE block == 1")
- result = q.fetchall()
- sl = []
- for index in result:
- i = index[0]
- sl.append(i)
- ids = '\n'.join(map(str, sl))
- await message.answer(f'ID пользователей в ЧС:\n{ids}')
- elif message.text == 'Добавить в ЧС':
- await message.answer('Введите id пользователя, которого нужно заблокировать.\nДля отмены нажмите кнопку ниже', reply_markup=kb.back)
- await st.item3.set()
- elif message.text == 'Убрать из ЧС':
- await message.answer('Введите id пользователя, которого нужно разблокировать.\nДля отмены нажмите кнопку ниже', reply_markup=kb.back)
- await st.item4.set()
- elif message.text == 'Рассылка':
- await message.answer('Введите текст для рассылки.\n\nДля отмены нажмите на кнопку ниже', reply_markup=kb.back)
- else:
- await message.answer('Сообщение отправлено.')
- 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')
- ids = message.chat.id
- await state.update_data(idsh=ids)
- else:
- await message.answer('Ваш аккаунт заблокирован в данном боте.')
- @dp.callback_query_handler(lambda call: True) # Inline часть
- async def cal(call, state: FSMContext):
- if call.data == 'ans':
- await call.message.answer('Введите ответ пользователю:', reply_markup=kb.back)
- await st.item2.set()
- @dp.message_handler(state=st.item2)
- async def proc(message: types.Message, state: FSMContext):
- if message.text == 'Отмена':
- await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.menu)
- await state.finish()
- else:
- await message.answer('Сообщение отправлено.', reply_markup=kb.menu)
- data = await state.get_data()
- id = data.get("idsh")
- print(id)
- await state.finish()
- @dp.message_handler(state=st.item)
- async def process_name(message: types.Message, state: FSMContext):
- q.execute(f'SELECT user_id FROM users')
- row = q.fetchall()
- connection.commit()
- text = message.text
- if message.text == 'Отмена':
- await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.adm)
- await state.finish()
- else:
- info = row
- await message.answer('Рассылка начата!', reply_markup=kb.adm)
- for i in range(len(info)):
- try:
- await bot.send_message(info[i][0], str(text))
- except:
- pass
- await message.answer('Рассылка завершена!', reply_markup=kb.adm)
- await state.finish()
- @dp.message_handler(state=st.item3)
- async def proc(message: types.Message, state: FSMContext):
- if message.text == 'Отмена':
- await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.adm)
- await state.finish()
- else:
- if message.text.isdigit():
- q.execute(f"SELECT block FROM users WHERE user_id = {message.text}")
- result = q.fetchall()
- connection.commit()
- if len(result) == 0:
- await message.answer('Такой пользователь не найден в базе данных.', reply_markup=kb.adm)
- await state.finish()
- else:
- a = result[0]
- id = a[0]
- if id == 0:
- q.execute(f"UPDATE users SET block = 1 WHERE user_id = {message.text}")
- connection.commit()
- await message.answer('Пользователь успешно заблокирован.', reply_markup=kb.adm)
- await bot.send_message(message.text, 'Вы были заблокированы администрацией.')
- await state.finish()
- else:
- await message.answer('Данный пользователь уже имеет блокировку.', reply_markup=kb.adm)
- await state.finish()
- else:
- await message.answer('Ты вводишь буквы...\nВведи ID')
- @dp.message_handler(state=st.item4)
- async def proc(message: types.Message, state: FSMContext):
- if message.text == 'Отмена':
- await message.answer('Отмена! Возвращаю назад.', reply_markup=kb.adm)
- await state.finish()
- else:
- if message.text.isdigit():
- q.execute(f"SELECT block FROM users WHERE user_id = {message.text}")
- result = q.fetchall()
- connection.commit()
- if len(result) == 0:
- await message.answer('Такой пользователь не найден в базе данных.', reply_markup=kb.adm)
- await state.finish()
- else:
- a = result[0]
- id = a[0]
- if id == 1:
- q.execute(f"UPDATE users SET block = 0 WHERE user_id = {message.text}")
- connection.commit()
- await message.answer('Пользователь успешно разбанен.', reply_markup=kb.adm)
- await bot.send_message(message.text, 'Вы были разблокированы администрацией.')
- await state.finish()
- else:
- await message.answer('Данный пользователь не заблокирован.', reply_markup=kb.adm)
- await state.finish()
- else:
- await message.answer('Ты вводишь буквы...\nВведи ID')
- if __name__ == '__main__':
- executor.start_polling(dp, skip_updates=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement