该机器人是为了通过发放条形码来注册活动而创建的。
如何让机器人将变量中的数据输入到文件中,而不是<function fio at 0x>
如何将用户消息从函数写入文件?
代码:
import os
import requests
import telebot
from telebot import types
from telebot.types import
bot = telebot.TeleBot('');
def init_file():
if not os.path.exists('users.txt'):
with open('users.txt', 'w'):
pass
def add_user(data: str, ifio: str, inumber: str, imail: str, iorg_num: str, iorg: str,) -> bool:
with open('users.txt', 'r') as f:
users = f.read().splitlines()
with open('users.txt', 'a') as f:
f.write(f'{data} {ifio} {inumber} {imail} {iorg_num} {iorg}\n')
return True
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'Добро пожаловать! Зарегистрируйтесь на мероприятие.')
Vfio = bot.send_message(message.chat.id, "Ваше ФИО: ")
bot.register_next_step_handler(Vfio, fio)
def fio(message1):
ifio = message1.text
Vnumber = bot.send_message(message1.chat.id, "Ваш номер телефона: ")
bot.register_next_step_handler(Vnumber, number)
return ifio
def number(message2):
inumber = message2.text
Vmail = bot.send_message(message2.chat.id, "Ваша почта: ")
bot.register_next_step_handler(Vmail, mail)
return inumber
def mail(message3):
imail = message3.text
Vorg = bot.send_message(message4.chat.id, '''Ваша организация: ''')
bot.register_next_step_handler(Vorg, org_num)
return imail
def org(message5):
iorg = message5.text
return iorg
result = add_user(data, ifio, inumber, imail, iorg)
bot.send_message(message6.chat.id, 'Регистрация прошла успешно!')
return
bot.polling(none_stop=True, interval=0)
作为示例,我已经安排了在步骤之间传递字典,但您也可以考虑使用状态机的替代方案:
状态机示例: