Система варнов для Telegram бота на Python
Добрый день (вечер или утро)! Хотел бы узнать как с помощью sqlite3 python - сделать систему варнов для Telegram бота.
@dp.message_handler(commands=['warn', 'варн'], commands_prefix='!/.')
async def warnUser(message: types.Message):
if message.chat.type in ['group', 'supergroup']:
try:
list_admins = await message.chat.get_administrators()
from_user = message['from']['id']
list_admins_2 = []
for admin in list_admins:
list_admins_2.append(admin['user']['id'])
for admin in list_admins:
if int(admin) == int(from_user):
if not message.reply_to_message:
await message.answer("Отправь эту команду ответом на сообщение нарушителя.")
else:
tg_id = message['reply_to_message']['from']['id']
first_name = message['reply_to_message']['from']['first_name']
connect = sqlite3.connect('warn_list.db')
cursor = connect.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS warn_list(
id INTEGER
)""")
connect.commit()
people_id = message.chat.id
cursor.execute(f"SELECT id FROM warn_list WHERE id = {people_id}")
data = cursor.fetchone()
if data is None:
user_id = [message.reply_to_message.from_user.id]
cursor.execute("INSERT INTO warn_list VALUES(?);", user_id)
connect.commit()
else:
pass
if from_user not in list_admins_2:
await message.answer("Эту команду могут использовать только админы чата.")
except TypeError:
pass
else:
await message.answer('Эта команда предназначена для использования в групповых чатах, а не в личных сообщениях!')
Ответы (1 шт):
Автор решения: MyZik
→ Ссылка
@dp.message_handler(commands=['warn', 'варн'], commands_prefix='!/.')
async def warnUser(message: types.Message):
if message.chat.type in ['group', 'supergroup']:
try:
list_admins = await message.chat.get_administrators()
from_user = message['from']['id']
list_admins_2 = []
for admin in list_admins:
list_admins_2.append(admin['user']['id'])
for admin in list_admins:
if int(admin) == int(from_user):
if not message.reply_to_message:
await message.answer("Отправь эту команду ответом на сообщение нарушителя.")
else:
tg_id = message['reply_to_message']['from']['id']
first_name = message['reply_to_message']['from']['first_name']
connect = sqlite3.connect('warn_list.db')
cursor = connect.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS warn_list(
id INTEGER
)""")
connect.commit()
people_id = message.chat.id
cursor.execute(f"SELECT id FROM warn_list WHERE id = {people_id}")
data = cursor.rowcount()
if data < 3:
user_id = [message.reply_to_message.from_user.id]
cursor.execute("INSERT INTO warn_list VALUES(?);", user_id)
connect.commit()
else:
# Здесь выбирайте сами - давать мут или бан
# Затем можно удалить все варны пользователя
cursor.execute(f"DELETE FROM warn_list WHERE id = {people_id}")
connect.commit()
if from_user not in list_admins_2:
await message.answer("Эту команду могут использовать только админы чата.")
except TypeError:
pass
else:
await message.answer('Эта команда предназначена для использования в групповых чатах, а не в личных сообщениях!')