必须有一个管理面板(我在Django上做),用户被添加到bot通道,他收到他的ID,管理员通过管理面板或表单将所有数据输入数据库(普通html模板)
# Модель клиента
class Client(models.Model):
surname = models.CharField(max_length=128, blank=False, null=False)
name = models.CharField(max_length=128, blank=False, null=False)
fatname = models.CharField(max_length=128, blank=False, null=False)
phone = models.PositiveSmallIntegerField(blank=True, null=True)
email = models.EmailField(max_length=128, blank=True, null=True)
tgid = models.CharField(max_length=32, blank=True, null=True) # id клиента в канале бота
def __str__(self):
fullname = self.surname + ' ' + self.name + ' ' + self.fatname
return fullname
接下来,管理员创建一个检查模型(学费)并将其发送给机器人通道中的特定客户端
# Модель чека
class Check(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
summary = models.PositiveIntegerField(blank=False, null=False)
summary_name = models.CharField(max_length=256, blank=False, null=False)
text_font = ImageFont.truetype('font.ttf', 200) # шрифт
default_check_image = Image.open("default_check.jpg")
client_check_image = ImageDraw.Draw(default_check_image)
def save(self):
self.client_check_image.text((0, 20), self.summary, (237, 230, 211), font=self.text_font)
self.client_check_image.text((0, 30), self.summary_name, (237, 230, 211), font=self.text_font)
self.client_check_image.save("client_check.jpg")
# тут мы записываем суму чека цифрами и буквами поверх стандартного изображения чека
# и сохраняем в новое которое должны отправить клиенту
我想在保存支票后会自动发送给客户端。就是这样,我被困在做什么和如何做,如何让 Django 后端与电报机器人一起工作?或者也许我需要一个没有 Django 的不同项目结构?
您需要在 views.py 中创建一个 POST 函数以接受来自 request.POST 的表单参数并将数据保存到您的模型中。可以在此处找到使用表单数据的示例 。关于使用 Telegram 机器人,我建议使用python-telegram-bot library 。存储库中有一个示例文件夹,您可以在其中查看使用机器人的示例。如何生成机器人令牌可以在 Telegram 网站和 Google 中找到。关于 dzhanga 与 bot 本身的交互,我根据库的文档在其中发出命令
/<app>/management/commands/run_bot.py并开始在那里使用 bot。这里的主要问题是如何将数据从 Django 传递到这个处理程序。我想不出更好的方法来做到这一点,我没有这样的任务,但作为一个选项,你可以从命令中运行它run_bot.py将跟踪数据库中数据更改的线程。我希望我回答了你所有的问题:)