抒情离题
如今,机器人是用于商务和娱乐的多功能工具。 我个人认为,未来与他们同在。 当然,阅读本文后,您将无法创建大型项目,但是要引起兴趣并开始就可以了。
安装与设定
首先,让我们下载python本身。 您可以在
官方网站上进行此操作。 不要忘记在安装过程中检查添加到PATH! 安装python之后,我们需要一个好的代码编辑器。 JetBrains提供免费的
PyCharm进行救援。 我们很接近,仍然需要下载远程机器人库。 为此,请转到命令行并输入:
pip install pytelegrambotapi
如果一切顺利,我们可以继续!
虚拟专用网
我想每个人都知道俄罗斯的电报封锁,而且一如既往,唯一的解决方案是vpn。 就个人而言,我建议使用
Windscribe 他们给你2 GB。 交通完全免费!
Bot父亲
在搜索电报时,我们找到了Bot Farher,并使用/ newbot命令创建了我们的机器人。 然后输入名称和用户名。 请注意,用户名必须以bot结尾!

如您所见,我们获得了一个特殊的api令牌,您可以使用它来控制您的机器人(在我的情况下,它是:
776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM )。 您可以记住您的令牌,但我建议您记下它。
代号
所有人都在等待的时刻到了。 打开PyCharm并创建一个新项目。

在这里,我建议将所有内容都归我所有(名称可以更改)。 创建项目后,让我们创建一个文件,其中将包含我们的代码。 右键单击项目所在的文件夹,然后单击新建→Python文件。 好的,让我们开始编写代码。 使用以下命令导入远程机器人库:
import telebot
现在,您需要创建bot变量。 实际上,变量名可以是任何东西,但是我习惯于编写bot。
bot = telebot.TeleBot(' ')
我们将编写
机器人 .message_handler()装饰器,我们的机器人将使用它来响应/ start命令。 为此,我们在括号中写命令= ['start']。 结果,我们应该得到以下信息:
@bot.message_handler(commands=['start'])
如果您尝试启动您的漫游器(人民币->运行),那么您将无法使用。 首先,在代码末尾,我们需要编写bot.polling()。 这是必要的,这样机器人就不会立即关闭,而是可以工作并检查服务器上是否有新消息。 其次,我们的机器人即使检查消息,也仍然无法回答任何问题。 现在该修复它了! 装饰器之后,我们创建start_message函数,该函数将使用message参数(该函数的名称可以是任何东西)。 接下来,让我们实现从机器人本身发送消息。 在函数中,我们编写bot.send_message(message.chat.id,“您好,您给我写了/开始”)。 看看您应该得到什么:
import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start') bot.polling()
让我们检查一下...

太好了,我们的机器人可以工作了! 这样他不仅可以回答命令,还可以回答消息,创建一个新的装饰器
bot .message_handler(),并在括号中编写content_types = ['text']。 通常,内容类型很多,例如位置,照片,音频,标签等。 但是我们需要回复文本,对不对? 因此,我们创建了一个带有message参数的send_text函数。 在函数中,我们编写条件:
@bot.message_handler(content_types=['text']) def send_text(message): if message.text == '': bot.send_message(message.chat.id, ', ') elif message.text == '': bot.send_message(message.chat.id, ', ')
如果消息文本为“ Hello”,则机器人将回答“您好,我的创建者”;如果消息文本为“ Bye”,则机器人将回答“再见创建者”。 在这里,我认为一切都清楚了。 但是您最想知道的是,如果用户输入“ hello”或“ Hi”,在这种情况下您应该怎么做? 一切都非常简单! 在这种情况下,在message.text之后编写函数.lower(),然后在文本中将所有大写字母替换为小写字母。 现在,我们的机器人不仅会响应“ hello”,还会响应“ PrivT”,甚至是“ PRIVET”。

这是您应该得到的:
import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start') @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') bot.polling()
好吧,我们弄清楚了文本,但是例如如何发送标签? 一切都很简单! 每个贴纸都有自己的ID,知道此ID后,我们就可以发送它了。 有两种获取标签ID的方法。 第一个(简单)-通过特殊机器人“贴纸ID是什么?”

好吧,第二种方式,对于那些不寻求简单方法的人。 我们创建一个新的
bot .message_handler()装饰器,仅在括号中写入content_types = ['sticker']。 然后一切照常。 我们创建了一个使用message参数的函数,但是在这里我们编写了print(消息)。 我们启动机器人。

看,一旦我发送了贴纸,它将立即在控制台中显示信息,并且最后将是我们的贴纸ID(file_id)。 让我们确保当用户向漫游器发送“我爱你”时,漫游器会回复一个贴纸。 无需创建新的装饰器,我们只需添加之前的条件即可。 但是,我们使用bot.send_sticker()代替bot.send_message(),而不是文本,而是使用贴纸的ID。

恭喜,一切顺利! 我正在考虑如何发送音频,照片和地理位置,您可以自己解决。 我想向您展示如何制作一个键盘,让机器人在启动时向您显示。 这将使其更加困难。 我们创建keyboard1变量,在其中写入telebot.types.ReplyKeyboardMarkup()。 此功能调出键盘。 接下来,创建行,但请记住最多不能超过12行! 为了创建它们,编写keyboard1.row()。 在括号中,写下您想要的任何内容;我个人将写下“ Hello”和“ Bye”。 现在,要调用键盘,让我们在启动时将message_markup = keyboard1添加到发送消息的功能中。 这是您应该得到的:
keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start', reply_markup=keyboard1)
我们启动机器人...

您会看到键盘很大。 要解决此问题,您只需要在ReplyKeyboardMarkup()中注册True。 好吧,如果您希望键盘在用户单击时立即隐藏,请编写另一个True。 您可以在
官方文档中详细了解这些True的含义。
keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
好,仅此而已! 当然,这并不是电报中所有可能的漫游器,但我向您展示了其主要功能。 谢谢您的关注。
源代码:
import telebot bot = telebot.TeleBot('< >') keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == ' ': bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI') @bot.message_handler(content_types=['sticker']) def sticker_id(message): print(message) bot.polling()
如果您有任何疑问,可以写电报
dimagorovtsov