При запуске все норм, но если в телеграмме нажать на клавиатуре "как дела", он вместо нужной фразы отвечает классический ответ:'Пока что я не умею говорить, но обязательно научусь!)'.
elif message.text == 'Kак дела':
bot.send_message(message.chat.id, str(random.randint(0,100)))
telebot save user answerи им подобным. Решение есть в примерах библиотеки на ее гитхабе. Нужно просто приложить два грамма старания
params = {'access_token': TOKEN, 'v': 5.131, 'message_ids': [369]}
r = requests.get('https://api.vk.com/method/messages.getById', params=params)
print(r.json()['response']['items'][0]['attachments'][0]['photo']['sizes'])
r = requests.get('{server}?act=a_check&key={key}&ts={ts}&wait=90'.format(server=data['server'], key=data['key'], ts=data['ts'])).json()
print(r['updates'][0]['object']['message']['attachments'][0]['photo']['sizes'])
imprort json
data = {"chat_id": chat_id, "text": text, "reply_markup": json.dumps(reply_markup)}
data = {"chat_id": chat_id, "text": text, "reply_markup": reply_markup}
requests.post(url, json=data)
return user1
@dp.message_handler(commands="ruletkaid")
async def inlinebtn(message: types.Message):
user1 = message.get_args()
user2 = message.from_user.username
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text="Принять", callback_data=f"accept_{user1}:{user2}"))
keyboard.add(types.InlineKeyboardButton(text="Не принимать", callback_data=f"decline_{user1}:{user2}"))
await message.answer(user1 + ', вас вызывает на дуэль ' + user2, reply_markup=keyboard)
@dp.callback_query_handler(lambda call: call.data.startswith('accept_'))
async def accept_duel(call: types.CallbackQuery):
user1, user2 = call.data.replace('accept_', '', 1).split(':')
if call.from_user.username != user1:
await call.answer(text="Не тебе адресовано.", show_alert=True)
on_reaction_add
вызывается только тогд , когда сообщение было отправлено при запущенном боте (грубо)on_raw_reaction_add
on_raw_reaction_add(payload)
id канала лежит в payload.channel_id
https://discord.com/api/users/@me/guilds
py
не определена.message.channel
является объектом класса discord.channel.TextChannel
. Нельзя его сравнить с числом, такое сравнение всегда выдаст неравенство в ответе, что в данном случае является True
, так что функция всегда будет прекращать своё выполнение на этом блоке if
.if message.channel.id != 903198062963490827:
bot.register_next_step_handler_by_chat_id()
. Первым аргументом он принимает ID чата, в котором будет бот ждать сообщение. Соответственно, туда нужно засунуть ID пользователя. Итог:bot.register_next_step_handler(message, dogovor, userID)
на bot.register_next_step_handler_by_chat_id(userID, dogovor)
register_next_step_handler
. Рекомендую создать хотя бы словарь вида {'number': 123, 'surname': 'surname'}
.def dogovor(message): # получаем фамилию
num_dog = message.text
user_info = {'num_dog': num_dog}
bot.send_message(message.chat.id, 'Какая у тебя фамилия?')
bot.register_next_step_handler(message, get_surname, user_info)
def get_surname(message, user_info): # получаем фамилию
user_info['surname'] = message.text
print('Фамилия:', user_info['surname'], '. Номер договора:', user_info['dog_num'])