Python中Discord Webhook重复发送历史Embed消息问题求助
解决Discord Webhook重复发送Embed消息的问题
问题代码
from discord_webhook import DiscordWebhook, DiscordEmbed import csv import os webhook = DiscordWebhook(url='https://discordapp.c.........') file_name = 'symbols.csv' all_data = [] def load_csv(): with open(file_name, 'r') as dict: rows = csv.DictReader(dict) for row in rows: all_data.append(row) load_csv() while True: coinname = (input("ENTER COINNAME: ")).upper() if coinname: for data in all_data: if data['BASE'].strip() == coinname.strip(): embed = DiscordEmbed(title=f'{coinname}/USDT', description=f'**{coinname}**', color=65280, url=f'https://www.binance.com/en/trade/{coinname}_USDT?layout=pro') print(f"[+] Message: {embed}") webhook.add_embed(embed) response = webhook.execute() print(response) os.system('cls')
问题描述
首次输入加密货币名称(如ETH)时,Discord Webhook可正常发送对应Embed消息;但第二次输入(如BTC)时,会将首次与当前的Embed消息一并发送。希望每次输入仅发送当前对应加密货币的Embed消息。
原因分析
你只初始化了一个webhook实例,每次调用webhook.add_embed()都会往这个实例里追加新的Embed内容,导致后续发送时会包含之前所有添加过的Embed。
解决方案
有两种简单的解决方式:
方式一:每次发送前清空已有Embed
在添加新Embed之前,调用webhook.remove_embeds()清空实例中已有的所有Embed,确保每次只发送当前的内容。
修改后的代码:
from discord_webhook import DiscordWebhook, DiscordEmbed import csv import os webhook = DiscordWebhook(url='https://discordapp.c.........') file_name = 'symbols.csv' all_data = [] def load_csv(): with open(file_name, 'r') as dict: rows = csv.DictReader(dict) for row in rows: all_data.append(row) load_csv() while True: coinname = (input("ENTER COINNAME: ")).upper() if coinname: for data in all_data: if data['BASE'].strip() == coinname.strip(): embed = DiscordEmbed(title=f'{coinname}/USDT', description=f'**{coinname}**', color=65280, url=f'https://www.binance.com/en/trade/{coinname}_USDT?layout=pro') print(f"[+] Message: {embed}") # 清空之前添加的所有Embed webhook.remove_embeds() webhook.add_embed(embed) response = webhook.execute() print(response) os.system('cls')
方式二:每次循环内重新创建Webhook实例
把webhook的初始化代码放到while True循环内部,每次输入都新建一个独立的Webhook对象,自然不会携带之前的Embed内容。
修改后的代码:
from discord_webhook import DiscordWebhook, DiscordEmbed import csv import os file_name = 'symbols.csv' all_data = [] def load_csv(): with open(file_name, 'r') as dict: rows = csv.DictReader(dict) for row in rows: all_data.append(row) load_csv() while True: coinname = (input("ENTER COINNAME: ")).upper() if coinname: # 每次输入都新建Webhook实例 webhook = DiscordWebhook(url='https://discordapp.c.........') for data in all_data: if data['BASE'].strip() == coinname.strip(): embed = DiscordEmbed(title=f'{coinname}/USDT', description=f'**{coinname}**', color=65280, url=f'https://www.binance.com/en/trade/{coinname}_USDT?layout=pro') print(f"[+] Message: {embed}") webhook.add_embed(embed) response = webhook.execute() print(response) os.system('cls')
内容的提问来源于stack exchange,提问作者AhmDen
相关产品推荐
相关产品推荐

