python - Python Telegram Bot 仅适用于我,不适用于其他用户
问题描述
我正在使用 Django 构建 Telegram Bot,我已经将它部署到 Heroku,但没有 Webhooks。为了测试我正在使用轮询,我无法从另一个电报帐户访问机器人。我有几个朋友在那个项目上和我一起工作,我需要他们访问机器人来测试它,但是当他们输入任何内容时,机器人没有回复。我不知道问题是什么,也没有在互联网上找到任何解决方案,所以我希望有人能在这里帮助我。
def send_search_result(update: Update, context: CallbackContext):
chat_id = update.message.chat_id
text = update.message.text
if not str(text).startswith('/'):
message = Profile.objects.get_or_create(external_id=chat_id, defaults={'name': update.message.from_user.username})[0]
Message(profile=message, text=text).save()
update.message.reply_text(text=text)
class Command(BaseCommand):
help = 'Telegram Bot'
def handle(self, *args, **options):
request = Request(con_pool_size=8)
bot = Bot(request=request, token=settings.TOKEN)
updater = Updater(bot=bot, use_context=True)
message_handler = MessageHandler(Filters.text, send_search_result)
select_tv_handler = CallbackQueryHandler(callback=select_tv, pass_chat_data=True)
updater.dispatcher.add_handler(message_handler)
updater.dispatcher.add_handler(select_tv_handler)
updater.start_polling()
updater.idle()
解决方案
我已经解决了这个问题。问题是不是每个 Telegram 用户都有用户名,所以当机器人试图在没有用户名的情况下在数据库中创建用户时,它遇到了一个问题,其中用户名为空。一旦我添加了处理空用户名的逻辑,一切正常
推荐阅读
- authorize.net - Authorize.net 退款一个截断错误 54
- .net - SignalR 客户端不会收到两条消息中的每一条
- formatting - 在 react-bootstrap Card.Text 中格式化文本
- javascript - 如何避免`PromiseRejectionHandledWarning: Promise 拒绝被异步处理`?
- python - 我试图将语音转换为文本并且出现严重错误并且不知道为什么,
- c++ - std::optional 相对于 nullptr 的优点/缺点是什么?
- c++ - C++ cout 没有打印到命令提示符
- flutter - 在 Flutter 中使用相同的代码库创建移动和 Web 应用程序的最有效方法是什么?
- aws-lambda - 未找到与有效负载的预期签名匹配的签名。您是否传递了从 Stripe 收到的原始请求正文?
- python - python - 如何在python中以内存和时间高效的方式将多个数据帧写入多个工作表?