电报机器人在多个人使用时会崩溃
在多个人使用该机器人之后,错误2022-06-03 19:46:12,641( init .py .py:648 mainthread)错误 - 出现Telebot:“对电报API的请求不成功。我读了很多东西,但没有任何帮助
import telebot
from telebot import types
import gspread
from registration_sheet import gs, sh
from button import button1, button2, mm
token = 'token'
txt = open("C:/Users/nmash/Desktop/Cloud/terms_of_the_agreement.txt", encoding = "utf-8")
class Telegrambot():
def __init__(self, token):
super(Telegrambot, self).__init__()
self.bot = telebot.TeleBot(token)
self.message_handler()
self.start()
def start(self):
self.bot.polling(none_stop=True)
def message_handler(self):
@self.bot.message_handler(content_types=['text'])
def message_worker(message):
if message.text == '/start':
button1()
self.bot.send_message(message.from_user.id, txt.read(), reply_markup=mm)
#self.bot.send_message(message.from_user.id, "Вы приняли условия соглашения✅", reply_markup=mm)
if message.text == "Принять условия соглашения✅":
self.bot.send_message(message.from_user.id, "Вы приняли условия соглашения✅", reply_markup=types.ReplyKeyboardRemove())
self.registration(message)
def registration(self, message):
def message_han(message):
sent = self.bot.send_message(message.from_user.id, 'Введите своё имя:')
self.bot.register_next_step_handler(sent, reg)
def reg(message):
name = message.text
worksheet = sh.sheet1
values_list = worksheet.row_values(2)
number = 0
while True:
n = number + 1
number = n
values_list = worksheet.row_values(number)
if values_list == []:
userId = number
break
worksheet.append_row([name, userId])
self.bot.send_message(message.from_user.id, "Ваше имя: " + name + "\nВаше ID: " + str(number))
message_han(message)
Telegrambot(token=token)
After more than one person uses the bot, the error 2022-06-03 19:46:12,641 (init.py:648 MainThread) ERROR - TeleBot appears: "A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: message text is empty". I read a lot of things, but nothing helped
import telebot
from telebot import types
import gspread
from registration_sheet import gs, sh
from button import button1, button2, mm
token = 'token'
txt = open("C:/Users/nmash/Desktop/Cloud/terms_of_the_agreement.txt", encoding = "utf-8")
class Telegrambot():
def __init__(self, token):
super(Telegrambot, self).__init__()
self.bot = telebot.TeleBot(token)
self.message_handler()
self.start()
def start(self):
self.bot.polling(none_stop=True)
def message_handler(self):
@self.bot.message_handler(content_types=['text'])
def message_worker(message):
if message.text == '/start':
button1()
self.bot.send_message(message.from_user.id, txt.read(), reply_markup=mm)
#self.bot.send_message(message.from_user.id, "Вы приняли условия соглашения✅", reply_markup=mm)
if message.text == "Принять условия соглашения✅":
self.bot.send_message(message.from_user.id, "Вы приняли условия соглашения✅", reply_markup=types.ReplyKeyboardRemove())
self.registration(message)
def registration(self, message):
def message_han(message):
sent = self.bot.send_message(message.from_user.id, 'Введите своё имя:')
self.bot.register_next_step_handler(sent, reg)
def reg(message):
name = message.text
worksheet = sh.sheet1
values_list = worksheet.row_values(2)
number = 0
while True:
n = number + 1
number = n
values_list = worksheet.row_values(number)
if values_list == []:
userId = number
break
worksheet.append_row([name, userId])
self.bot.send_message(message.from_user.id, "Ваше имя: " + name + "\nВаше ID: " + str(number))
message_han(message)
Telegrambot(token=token)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我猜想问题隐藏在这里:
一旦读取打开的文件(
txt.read()
),接下来的下一个用户将导致空白结果。避免这种情况的一种方法是从一开始就读取您的文件,将结果保存在变量中,并根据需要多次使用它。
I am guessing that the problem hides here:
Once the opened file is read (
txt.read()
), next reads for the next users will lead to empty results.One way to avoid that is to read your file in the very beginning an save the result in a variable and the use it as many times as needed.