电报机器人轮询功能

发布于 2025-02-11 13:55:19 字数 2429 浏览 2 评论 0原文

这是我第一次试图制作电报机器人。

代码:

import os
import telebot

API_TOKEN = os.getenv('API_KEY')
bot = telebot.TeleBot(API_TOKEN)

@bot.message_handler(commands=['hello'])
def send_welcome(message):
    bot.reply_to(message, "HI!")
bot.polling()

错误:

Traceback (most recent call last):
  File "/Users/anshtyagi/Documents/telegram bot/main.py", line 23, in <module>
    bot.polling()
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 621, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 695, in __threaded_polling
    raise e
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 650, in __threaded_polling
    polling_thread.raise_exceptions()
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/util.py", line 111, in raise_exceptions
    raise self.exception_info
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/util.py", line 93, in run
    task(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 360, in __retrieve_updates
    updates = self.get_updates(offset=(self.last_update_id + 1), 
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 338, in get_updates
    json_updates = apihelper.get_updates(self.token, offset, limit, timeout, allowed_updates, long_polling_timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/apihelper.py", line 324, in get_updates
    return _make_request(token, method_url, params=payload)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/apihelper.py", line 80, in _make_request
    raise Exception('Bot token is not defined')
Exception: Bot token is not defined

运行电报机器人时我会遇到此错误,这是我的第一次。我已经看到了一些教程如何制作机器人,但我的行动不起作用。我已经在.env文件中发布了令牌,并使用os.getEnv将其导入。我只是只是想创建一个简单的机器人,只是为了我的知识,因为我尝试制作Discord Bot,这是很棒的经验,我学到了许多新语言,所以我想为什么不尝试一下。

This is my first time trying to make a telegram bot.

Code:

import os
import telebot

API_TOKEN = os.getenv('API_KEY')
bot = telebot.TeleBot(API_TOKEN)

@bot.message_handler(commands=['hello'])
def send_welcome(message):
    bot.reply_to(message, "HI!")
bot.polling()

Error:

Traceback (most recent call last):
  File "/Users/anshtyagi/Documents/telegram bot/main.py", line 23, in <module>
    bot.polling()
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 621, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 695, in __threaded_polling
    raise e
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 650, in __threaded_polling
    polling_thread.raise_exceptions()
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/util.py", line 111, in raise_exceptions
    raise self.exception_info
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/util.py", line 93, in run
    task(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 360, in __retrieve_updates
    updates = self.get_updates(offset=(self.last_update_id + 1), 
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/__init__.py", line 338, in get_updates
    json_updates = apihelper.get_updates(self.token, offset, limit, timeout, allowed_updates, long_polling_timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/apihelper.py", line 324, in get_updates
    return _make_request(token, method_url, params=payload)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telebot/apihelper.py", line 80, in _make_request
    raise Exception('Bot token is not defined')
Exception: Bot token is not defined

I am getting this error while running my telegram bot this is my first time. I have seen some tutorials how to make a bot but mine is not working. I have posted my token in .env file and imported it using os.getenv. I am just simply trying to make a simple bot just for my knowledge as I have tried making discord bots and it was great experience and I learned many new languages so I thought why not try this also.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掐死时间 2025-02-18 13:55:19

我也是Python和Telegram bot的新手,但是我的第一个机器人运行正常,我在您的代码中看到了问题。您的异常告诉我们例外:bot令牌未定义。因此,您的脚本不会从系统var中获得令牌。

您说您的令牌在.env文件中。要从该文件中获取OS变量,我们必须从Dotenv Import load_dotenv 导入一个模块:

接下来,我们必须使用函数load_dotenv()从该文件导入变量。
之后,我们可以使用os.getenv读取我们的变量。因此,您的代码行似乎是正确的。如果文件os.getenv中没有变量,则应从OS获取它。


因此,您的代码可能看起来像:

import os
import telebot
from dotenv import load_dotenv

load_dotenv()
API_TOKEN = os.getenv('API_KEY')
bot = telebot.TeleBot(API_TOKEN)

@bot.message_handler(commands=['hello'])
def send_welcome(message):
    bot.reply_to(message, "HI!")
bot.polling()

I'm also new to python and telegram bots, but my first bot is running ok and I see the problem in your code. Your exception tells us Exception: Bot token is not defined. So your script doesn't get a token from the system var.

You say that you have your token in .env file. To get os variable from that file first of all we must import a module: from dotenv import load_dotenv.

Next we must import variables from that file using the function load_dotenv().
After that we can read our variables with os.getenv. So that line of your code seems to be correct. If there is no variable in the file os.getenv should get it from the os.


So your code may look like:

import os
import telebot
from dotenv import load_dotenv

load_dotenv()
API_TOKEN = os.getenv('API_KEY')
bot = telebot.TeleBot(API_TOKEN)

@bot.message_handler(commands=['hello'])
def send_welcome(message):
    bot.reply_to(message, "HI!")
bot.polling()
你对谁都笑 2025-02-18 13:55:19

尝试以下操作:

导入telebot

bot = telebot.telebot(“ api_key”)

而不是:

导入OS
导入telebot

api_token = os.getEnv('api_key')
bot = telebot.telebot(api_token)

try this:

import telebot

bot = telebot.TeleBot("API_KEY")

instead of:

import os
import telebot

API_TOKEN = os.getenv('API_KEY')
bot = telebot.TeleBot(API_TOKEN)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文