Telegram бот для чата, не работает меню бота
Недавно начал интересоваться ботами. Решил написать бота для своего чата, но застрял на одном моменте. Значит, когда новый участник добавляется в чат, бот сразу же бросает его в мут, присылает сообщение с правилами чата и кнопкой в духе "Нажмите, если согласны с правилами". Мут работает, сообщение с кнопкой отображается, но при нажатии не снимает мут. Вот, собственно, код:
import telebot
from telebot import types
bot = telebot.TeleBot("")
@bot.message_handler(commands=["start"])
def send_welcome(message):
bot.send_message(message.chat.id, "Working")
@bot.message_handler(content_types=["new_chat_members"], func=lambda call: True)
def newmemb(message):
bot.restrict_chat_member(message.chat.id, message.from_user.id, can_send_messages=False)
markup = types.InlineKeyboardMarkup()
btn = types.InlineKeyboardButton("Yes", callback_data="1")
markup.row(btn)
bot.send_message(message.chat.id, "Human?", reply_markup=markup)
def callback_query(call):
if call.data == "1":
bot.restrict_chat_member(message.chat.id, message.from_user.id, can_send_messages=True)
else: pass
bot.polling()
Буду крайне благодарен за помощь!
Ответы (1 шт):
Автор решения: djighoul29
→ Ссылка
import telebot
import json
import config
from telebot import types
bot = telebot.TeleBot(config.lab_token)
@bot.message_handler(content_types=["new_chat_members"], func=lambda call: True)
def new_member(message):
bot.restrict_chat_member(message.chat.id, message.from_user.id,
can_send_messages=False)
markup = types.InlineKeyboardMarkup()
btn = types.InlineKeyboardButton("Yes", callback_data="HumanScaner")
markup.row(btn)
bot.send_message(message.chat.id, "Human?", reply_markup=markup, reply_to_message_id=message.message_id)
@bot.callback_query_handler(func=lambda call: True)
def callback_access(call):
if call.data == "HumanScaner":
CallBackDataJson = json.dumps(call.message.json)
DataMessage = json.loads(CallBackDataJson)
UserID = DataMessage['reply_to_message']['from']['id']
if UserID == call.from_user.id:
bot.restrict_chat_member(call.message.chat.id, call.from_user.id, can_send_messages=True)
bot.delete_message(message_id=call.message.message_id, chat_id=call.message.chat.id)
bot.polling()
Этот код исправил проблему. Берите кому надо. Надеюсь, вам помогу.