Estou desenvolvendo um bot em python para o telegram à qual tem a função de adicionar, remover e mencionar usuários por grupos.
Entretanto estou com problema no meu código à qual não consigo fazer com que por exemplo o comando /adicionar_tecnicos NOME (ou @NOME) adicione aquela pessoa, normalmente dando retorno como none, entre outras alterações eu mesmo.
O que eu desejo é que após o comando, o usuário "mencionado" seja ele tendo nome de usuário ou não, seja aplicado o comando sobre ele.
O código:
import logging
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
# Enable logging
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO
)
logger = logging.getLogger(__name__)
tecnicos_group = {}
comercial_group = {}
financeiro_group = {}
suporte_group = {}
async def mencionar_tecnicos(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
members = " ".join([f"@{member}" for member in tecnicos_group.keys()])
await update.message.reply_text(members)
async def mencionar_comercial(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
members = " ".join([f"@{member}" for member in comercial_group.keys()])
await update.message.reply_text(members)
async def mencionar_financeiro(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
members = " ".join([f"@{member}" for member in financeiro_group.keys()])
await update.message.reply_text(members)
async def mencionar_suporte(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
members = " ".join([f"@{member}" for member in suporte_group.keys()])
await update.message.reply_text(members)
async def adicionar_tecnicos(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
tecnicos_group[username] = True
await update.message.reply_text(f"Adicionado {username} ao grupo de técnicos.")
async def adicionar_comercial(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
comercial_group[username] = True
await update.message.reply_text(f"Adicionado {username} ao grupo comercial.")
async def adicionar_financeiro(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
financeiro_group[username] = True
await update.message.reply_text(f"Adicionado {username} ao grupo financeiro.")
async def adicionar_suporte(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
suporte_group[username] = True
await update.message.reply_text(f"Adicionado {username} ao grupo de suporte.")
async def remover_tecnicos(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
if username in tecnicos_group:
del tecnicos_group[username]
await update.message.reply_text(f"Removido {username} do grupo de técnicos.")
else:
await update.message.reply_text("Você não está no grupo de técnicos.")
async def remover_comercial(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
if username in comercial_group:
del comercial_group[username]
await update.message.reply_text(f"Removido {username} do grupo comercial.")
else:
await update.message.reply_text("Você não está no grupo comercial.")
async def remover_financeiro(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
if username in financeiro_group:
del financeiro_group[username]
await update.message.reply_text(f"Removido {username} do grupo financeiro.")
else:
await update.message.reply_text("Você não está no grupo financeiro.")
async def remover_suporte(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
username = update.message.chat.username
if username in suporte_group:
del suporte_group[username]
await update.message.reply_text(f"Removido {username} do grupo de suporte.")
else:
await update.message.reply_text("Você não está no grupo de suporte.")
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
"""Displays info on how to use the bot."""
await update.message.reply_text("Use /start para testar este bot.")
def main() -> None:
"""Run the bot."""
# Create the Application and pass it your bot's token.
application = Application.builder().token("6473614239:AAHtG7dot5Zr5njx48eIL1YrewkkjyRn3to").build()
application.add_handler(CommandHandler("mencionar_tecnicos", mencionar_tecnicos))
application.add_handler(CommandHandler("mencionar_comercial", mencionar_comercial))
application.add_handler(CommandHandler("mencionar_financeiro", mencionar_financeiro))
application.add_handler(CommandHandler("mencionar_suporte", mencionar_suporte))
application.add_handler(CommandHandler("adicionar_tecnicos", adicionar_tecnicos))
application.add_handler(CommandHandler("adicionar_comercial", adicionar_comercial))
application.add_handler(CommandHandler("adicionar_financeiro", adicionar_financeiro))
application.add_handler(CommandHandler("adicionar_suporte", adicionar_suporte))
application.add_handler(CommandHandler("remover_tecnicos", remover_tecnicos))
application.add_handler(CommandHandler("remover_comercial", remover_comercial))
application.add_handler(CommandHandler("remover_financeiro", remover_financeiro))
application.add_handler(CommandHandler("remover_suporte", remover_suporte))
application.add_handler(CommandHandler("help", help_command))
# Run the bot until the user presses Ctrl-C
application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()