【发布时间】:2020-05-06 15:51:37
【问题描述】:
我正在开发的 Discord 机器人有以下代码:
import discord
import random
from discord.ext import commands, tasks
import os
import time
import asyncio
import re
import urllib.request
import json
from apiclient.discovery import build
from itertools import product, cycle
from discord.ext.tasks import loop
client = commands.Bot(command_prefix = 'v!', description='fff', case_insensitive=True)
token = 'REDEACTED'
client.remove_command("help")
@client.command(pass_context=True)
async def Ban(ctx):
members = []
a = (ctx.author)
print(a)
m = (ctx.message.content)
m = m.replace("v!ban ", '')
print(m)
with open('members.txt', 'w'): pass
# print(members)
for member in ctx.guild.members:
with open('members.txt', 'a', encoding = "UTF-8") as f:
f.writelines(str(member) + '\n')
with open('members.txt', 'r', encoding = "UTF-8") as f:
members = f.read()
for i in members:
if i == m:
print('True')
else:
print("False")
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
await client.change_presence(activity = discord.Game("v!help"))
client.run(token)
“members.txt”文件包含:(我的 Discord 服务器的成员)
kurt#6396
galen#2172
xXDEFECTMEXx#0598
xx_kyrah.w#2995
lmao.com#5953
skyanite#1725
Gilly#5865
chef shaq#3889
mariokuhl.RS#0101
UltimateDucc#9121
xSaltyOne#9450
Jacobs Kid#0771
Alex L#7988
✪ csw ✪#0115
smithers#4004
Little5avage#8028
FaZe_Eric#9627
Unib_Rovodkalan#8661
ARX6.#5773
The Bomb#3693
如果我要执行命令v!ban UltimateDucc#9121,它将返回False 而不是True,即使该值存在于数组中。
我想要达到的目标:
收集服务器成员 - 完成
放入文件 - 完成
从用户那里获取输入 - 完成
检查输入是否在文件中 - 卡住
感谢任何帮助。
【问题讨论】:
-
我在任何地方都看不到
if... in。不过我很好奇,with open('members.txt', 'w'): pass是干什么用的? -
这里指的是
for i in members: -
该行也清除了文本文件。
-
你的意思是
if i in m:? -
是的,'m' 是用户名
标签: python if-statement discord discord.py