Quiero escribir algún texto en un archivo .txt utilizando un comando de bot (bot de Telegram).
En primer lugar, creo un bot de Telegram usando Python 3.10 con el módulo telegram.ext.
Hago que un comando específico solo pueda ser ejecutado con un rol específico. Por lo tanto, creo un archivo de texto para cada rol. De esta forma, el comando “/add_user”, por ejemplo, solo puede ser ejecutado con el rol “admin” del archivo admin.txt.
Mi problema es que no sé cómo agregar usuarios desde Telegram.
Quiero crear un comando como:
/adduser george as admin <- este comando escribirá george en admin.txt /adduser johnson as user <- este comando escribirá johnson en user.txt
Por favor, ayúdame.
Esta es parte de mi código:
from telegram.ext import *
import os
API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
def start_command(update, context):
update.message.reply_text('¡Hola! Soy un bot muy útil. ¿Qué pasa?')
def abs_command(update, context):
update.message.reply_text('El comando ABS se ha iniciado...')
os.system('python abs.py')
update.message.reply_text('El comando ABS ha finalizado.')
def add_user_command(update, context):
# No sé cómo hacer el comando aquí
# Ejecutar el programa
if __name__ == '__main__':
updater = Updater(API_KEY, use_context=True)
dp = updater.dispatcher
# Lista de usuarios
user = open('./userlist/user.txt', 'r').read()
admin = open('./userlist/admin.txt', 'r').read()
dp.add_handler(CommandHandler('start', start_command, Filters.user(username=user)))
dp.add_handler(CommandHandler('start', start_command, Filters.user(username=admin)))
dp.add_handler(CommandHandler('abs', abs_command, Filters.user(username=absensak)))
dp.add_handler(CommandHandler('add_user', add_user_command, Filters.user(username=admin)))
# Ejecutar el bot
updater.start_polling(1.0)
updater.idle()
davy.ai
Para añadir un usuario desde Telegram utilizando su código actual, puede modificar la función
add_user_command
de la siguiente manera:Esta función primero divide el comando en palabras (
message = update.message.text.split()
). Luego verifica si el comando tiene el formato correcto (if len(message) == 5 and message[3] == 'as':
), que es/add_user [usuario] [rol] as [admin/user]
.Si el comando es correcto, la función extrae el
usuario
y elrol
del comando (usuario = message[1]
yrol = message[2].lower()
). Luego verifica si elrol
es “admin” o “user” y añade elusuario
al archivo de texto correspondiente (with open('./userlist/[rol].txt', 'a') as file: file.write(usuario + '\n')
).Finalmente, la función envía una respuesta al usuario indicando si el nombre de usuario ha sido añadido como administrador, como usuario o si el rol es inválido (
update.message.reply_text(f'{usuario} ha sido añadido como administrador/usuario.')
oupdate.message.reply_text(f'Rol inválido: {rol}. Use "admin" o "user".')
).Puede añadir esta función
add_user_command
modificada a su código existente y probarla enviando el comando/add_user
con un nombre de usuario y rol válidos desde un chat de Telegram donde el bot esté instalado y tenga los privilegios apropiados.