#callback #python-telegram-bot
Вопрос:
Вот мой код. После нескольких нажатий на встроенную кнопку сервер не отвечает, кроме значка загрузки на кнопке. Любая помощь будет признательна. Я должен упомянуть, что это происходит, когда люди нажимают на кнопку одновременно (например, более 100 пользователей нажимают на кнопку менее чем за секунду). У меня есть двухъядерный сервер с 4 ГБ оперативной памяти.
def button(self, update: Update, context: CallbackContext) -> None:
user = query.from_user
tdate = time.time()
dat = 0
if "postButton::" in query.data:
try:
name = query.data.replace("postButton::", "")
channels = list(pd.read_sql("select distinct(chatid) as chs from allusers where lower(username) in (select distinct(lower(username)) from channels where lower(name) = '{}')".format(name.lower()), self.mydb).chs)
b = True
try:
for i in channels:
result = query.bot.get_chat_member(user_id=update.callback_query.from_user.id, chat_id=i)
if result.status == 'left' or result.status == 'kicked':
b = False
break
except:
b = False
if b:
sql = """
INSERT INTO participants (name, tdate, chatid)
SELECT '{}', {}, {}
WHERE
NOT EXISTS (
SELECT chatid FROM participants WHERE chatid = {} and lower(name) = lower('{}')
);
""".format(name, tdate, user.id, user.id, name)
conn = self.mydb
# connect to the PostgreSQL server
cur = conn.cursor()
# create table one by one
cur.execute(sql)
# close communication with the PostgreSQL database server
cur.close()
# commit the changes
conn.commit()
query.answer(text='you are participated', show_alert=True)
else:
query.answer(text='you are not participated ', show_alert=True)
except (Exception, pg.DatabaseError) as error:
print(error)
dat = int(pd.read_sql("select count(*) as cc from participants where lower(name) = lower('{}')".format(name),self.mydb).iloc[0].cc)
keyboard = [[
InlineKeyboardButton('Участвовать-' str(dat),
callback_data=query.data),
],
]
reply_markup = InlineKeyboardMarkup(keyboard)
try:
query.edit_message_reply_markup(reply_markup=reply_markup)
except:
print('CallBackQuery Error')
Комментарии:
1. Привет. Было бы полезно также повидаться с вашими обработчиками. Также, пожалуйста, убедитесь, что вы правильно сделали отступ в своем коде — его трудно прочитать в том виде, в каком он сейчас отформатирован. Наконец, пожалуйста, взгляните на статью PTB «Спрашивай правильно»: github.com/python-telegram-bot/python-telegram-bot/wiki/…