如何在 python Discord 机器人中获取用户输入?

2024-01-05

我有一个 python discord 机器人,我需要它在命令后获取用户输入,我该怎么做?我是 python 和制作不和谐机器人的新手。这是我的代码:

import discord, datetime, time
from discord.ext import commands
from datetime import date, datetime

prefix = "!!"
client = commands.Bot(command_prefix=prefix, case_insensitive=True)

times_used = 0

@client.event
async def on_ready():
  print(f"I am ready to go - {client.user.name}")
  await client.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name=f"{client.command_prefix}python_help. This bot is made by drakeerv."))

@client.command(name="ping")
async def _ping(ctx):
  global times_used
  await ctx.send(f"Ping: {client.latency}")
  times_used = times_used + 1

@client.command(name="time")
async def _time(ctx):
  global times_used
  from datetime import date, datetime

  now = datetime.now()

  if (now.strftime("%H") <= "12"):
    am_pm = "AM"
  else:
    am_pm = "PM"

  datetime = now.strftime("%m/%d/%Y, %I:%M")

  await ctx.send("Current Time:" + ' '  + datetime + ' ' + am_pm)
  times_used = times_used + 1

@client.command(name="times_used")
async def _used(ctx):
  global times_used
  await ctx.send(f"Times used since last reboot:" + ' ' + str(times_used))
  times_used = times_used + 1

@client.command(name="command") #THIS LINE
async def _command(ctx):
  global times_used
  await ctx.send(f"y or n")
  times_used = times_used + 1

@client.command(name="python_help")
async def _python_help(ctx):
  global times_used
  msg = '\r\n'.join(["!!help: returns all of the commands and what they do.",
                     "!!time: returns the current time.",
                     "!!ping: returns the ping to the server."])
  await ctx.send(msg)
  times_used = times_used + 1



client.run("token")

我使用的是 python 版本 3.8.3。我已经看过其他帖子,但他们没有回答我的问题或给了我错误。任何帮助将不胜感激!


你会想要使用Client.wait_for():

@client.command(name="command")
async def _command(ctx):
    global times_used
    await ctx.send(f"y or n")

    # This will make sure that the response will only be registered if the following
    # conditions are met:
    def check(msg):
        return msg.author == ctx.author and msg.channel == ctx.channel and \
        msg.content.lower() in ["y", "n"]

    msg = await client.wait_for("message", check=check)
    if msg.content.lower() == "y":
        await ctx.send("You said yes!")
    else:
        await ctx.send("You said no!")

    times_used = times_used + 1

并且有超时:

import asyncio # To get the exception

@client.command(...)
async def _command(ctx):
    # code
    try:
        msg = await client.wait_for("message", check=check, timeout=30) # 30 seconds to reply
    except asyncio.TimeoutError:
        await ctx.send("Sorry, you didn't reply in time!")

参考:

  • Client.wait_for() https://discordpy.readthedocs.io/en/latest/api.html#discord.Client.wait_for- 更多例子在这里
  • Message.author https://discordpy.readthedocs.io/en/latest/api.html#discord.Message.author
  • Message.channel https://discordpy.readthedocs.io/en/latest/api.html#discord.Message.channel
  • Message.content https://discordpy.readthedocs.io/en/latest/api.html#discord.Message.content
  • asyncio.TimeoutError https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.TimeoutError
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 python Discord 机器人中获取用户输入? 的相关文章

  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 搜索多个字段

    我想我没有正确理解 django haystack 我有一个包含多个字段的数据模型 我希望搜索其中两个字段 class UserProfile models Model user models ForeignKey User unique
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 在 matplotlib 中的极坐标图上移动径向刻度标签

    From matplotlib 示例 http matplotlib org examples pylab examples polar demo html import numpy as np import seaborn as sbs
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 在 Django 查询中使用 .extra(select={...}) 引入的值上使用 .aggregate() ?

    我正在尝试计算玩家每周玩游戏的次数 如下所示 player game objects extra select week WEEK games game date aggregate count Count week 但姜戈抱怨说 Fiel
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460

随机推荐

  • 使用参数将表单提交到操作,Asp.Net.Core Mvc

    我正在尝试通过 ajax 在 asp net core 中提交排序下拉表单 操作还有其他参数 我也想执行这些参数 但表单不提交其他参数 我认为主要问题是剃须刀的形状部分 这是我行动的一部分 public IActionResult Prod
  • 可以在没有 UIWebView 的情况下运行 javascript 吗?

    是否可以运行一些 javascript 代码 也许有一个NSString作为输入 而不使用UIWebView 我想在单独的线程中运行此代码 因此 UIWebView 是不可能的 并且我真的不想渲染任何内容 只需返回结果即可 我没有尝试过 但
  • 如何从 OpenGL ES 中渲染的纹理读取像素

    我正在尝试从即时生成的纹理 RTT 渲染到纹理 中读取像素 我通过实施 Apple 建议的方法来拍摄此快照here http developer apple com library ios qa qa1704 index html 这对于呈
  • Java推断类型化HashSet的错误类型[重复]

    这个问题在这里已经有答案了 可能的重复 调用 TreeSet contains Long valueOf someLongValue 时出现 ClassCastException https stackoverflow com questi
  • Django settings.py 错误:不支持按文件名导入

    我在虚拟环境中运行 Django 使用 virtualenv 并且尝试添加自定义开发环境设置文件以在开发时简化应用程序配置 我的计划是用两行代码来完成此操作 if os environ get DEVELOPMENT None from l
  • 为什么 php rename() 会损坏我的文件?

    我正在使用 plupload 将多个文件上传到我的服务器 使用这个 有一个参数 url upload php upload php 在收到文件时捕获文件 如果文件被分块 可能会重新组合它们 收到完整文件后 它会将响应发送回原始页面 并显示绿
  • 如何测试你的Linux是否支持SSE2

    其实我有2个问题 SSE2兼容性是CPU问题还是编译器问题 如何检查您的CPU或编译器是否支持SSE2 我正在使用 GCC 版本 gcc GCC 4 5 1 当我尝试编译代码时 它给了我这个错误 gcc O3 msse2 fno stric
  • 谷歌浏览器扩展 :: console.log() 来自后台页面?

    如果我打电话console log something 从弹出页面或包含的任何脚本都可以正常工作 但是 由于后台页面不是直接从弹出页面运行 因此它不包含在控制台中 有什么方法可以让我得到console log 在后台页面中显示在弹出页面的控
  • 使用Java从多行字符串中删除空行

    我有一个多行字符串 其他行之间有一些空行 看起来像 def msg AAAAAA BBBBBB CCCCCC DDDDDD EEEEEE TEST FFFFF GGGGGG 我尝试了一些正则表达式 msg msg replaceAll n
  • 对文本文件中的每一行进行排序

    我有一个文本文件 其中每行包含一些单词 例如 stackoverflow coding programming tag question badges 我必须对每一行进行排序并保留行的顺序 例如 对于上面的例子 输出应该是 coding p
  • Azure 门户应用程序设置:“无法加载设置”(ReadOnlyDisabledSubscription)

    在 Azure 门户中 我选择我的 Web 应用程序 然后选择 应用程序设置 它显示以下内容 应用程序设置和连接字符串的错误消息 无法加载设置 我该如何解决 附加信息 与我具有相同权限的另一个用户在访问同一应用程序设置页面时也遇到了此问题
  • 允许弹性项目保持固定宽度并在容器内水平滚动[重复]

    这个问题在这里已经有答案了 我有一位家长正在使用display flex 目前它有四个子卡 卡 但可能有更多 所有的孩子都需要大但相等的宽度 例如 每个孩子都需要一个40 宽度 如果发生这种情况 屏幕上只能容纳一定数量的孩子 我需要能够做到
  • 在 $group 的 mongodb 聚合框架中使用 $regex

    考虑以下示例 db article aggregate group id author docsPerAuthor sum 1 viewsPerAuthor sum pageViews 这按作者字段分组并计算两个字段 我有 author F
  • ServletContext.getRequestDispatcher() 与 ServletRequest.getRequestDispatcher()

    why getRequestDispatcher 字符串路径 的 ServletRequest 接口不能 扩展到当前 servlet 之外 语境 where as getRequestDispatcher 字符串路径 的 ServletCo
  • WinForm 绑定场景中的数据上下文生命周期

    这个问题困扰了我有一段时间了 但我不是专家 这有点长 我有一个带有 Outlook 风格 UI 的 WinForms 应用程序 也就是说 左侧窗格上有一个栏 允许您选择一个 WinForms 控件 屏幕 例如客户屏幕 右侧窗格上将出现一个客
  • 如何将文件名与路径分开? basename() 与 preg_split() 和 array_pop()

    Why use basename 在 PHP 脚本中 如果这个函数实际执行的操作可以写成两行 subFolders preg split ui path explode on or name array pop subFolder extr
  • C# 帮助使用 StreamReader 读取外文字符

    我使用下面的代码来读取包含外来字符的文本文件 该文件采用 ANSI 编码 在记事本中看起来很好 下面的代码不起作用 当读取文件值并在数据网格中显示字符时 字符显示为正方形 其他地方是否还有其他问题 StreamReader reader n
  • 正则表达式仅按最后一个空格字符分割字符串

    希望这应该是一个快速而简单的方法 使用 PHP 我试图将一个字符串拆分为一个数组 但仅通过最后一个空格实例 到目前为止我已经 str hello this is a space arr preg split s str print r ar
  • 在 .NET Winforms 应用程序中创建图像按钮

    我正在尝试在 Visual Studio 2010 的 NET 4 0 Winforms 应用程序中创建一个按钮 该按钮只是一个图像 我有一个无边框的窗口 并有一个背景图像来构成该应用程序的自定义皮肤 对于窗口右上角的关闭 最小化按钮 我想
  • 如何在 python Discord 机器人中获取用户输入?

    我有一个 python discord 机器人 我需要它在命令后获取用户输入 我该怎么做 我是 python 和制作不和谐机器人的新手 这是我的代码 import discord datetime time from discord ext