Ejemplo n.º 1
0
 public static void CheckItemMessage(Item itemChecked)         //run when getting/equipping a new item
 {
     for (int i = 0; i < gameMessages.Count; i++)
     {
         if (gameMessages[i].GetClassType() == "NewItemMessage")
         {
             if (!gameMessages[i].Condition)
             {
                 NewItemMessage currentMessage = (NewItemMessage)gameMessages[i];
                 if (currentMessage.NewItem == itemChecked)
                 {
                     PrintMessage(currentMessage);
                     currentMessage.Condition = true;
                     break;
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        internal async Task HandleNewItemUpdate(NewItemMessage newItemMessage)
        {
            // Check if setting is turned on
            if (bool.TryParse(await _settingManager.GetSettingValue("GUILDCONFIG_ITEMDB_ANNNEWITEM", Guild), out var shouldAnnounce) && shouldAnnounce)
            {
                // Check if item is in list of announceables
                var settingValue = await _settingManager.GetSettingValue("GUILDCONFIG_ITEMDB_NEWITEMTYPES", Guild);

                try
                {
                    var itemTypesToAnnounce = (settingValue ?? "")
                                              .Split(',')
                                              .Select(x =>
                    {
                        FRItemCategory?cat = null;
                        if (Enum.TryParse <FRItemCategory>(x, out var category))
                        {
                            cat = category;
                        }
                        return(cat);
                    })
                                              .Where(x => x != null)
                                              .Select(x => x.Value)
                                              .ToList();

                    if (itemTypesToAnnounce.Contains(newItemMessage.Item.ItemCategory))
                    {
                        // Get the channel to announce item in
                        ISocketMessageChannel annChannel = null;
                        if (bool.TryParse(await _settingManager.GetSettingValue("GUILDCONFIG_ITEMDB_USEANNCHANNEL", Guild), out var useGeneralAnnChannel) && useGeneralAnnChannel)
                        {
                            var annChannelId = await _settingManager.GetSettingValue("GUILDCONFIG_ANN_CHANNEL", Guild);

                            if (annChannelId != null)
                            {
                                annChannel = Guild.GetChannel(ulong.Parse(annChannelId)) as ISocketMessageChannel;
                            }
                        }
                        else
                        {
                            var annNewItemChannelId = await _settingManager.GetSettingValue("GUILDCONFIG_ITEMDB_ANN_CHANNEL", Guild);

                            if (annNewItemChannelId != null)
                            {
                                annChannel = Guild.GetChannel(ulong.Parse(annNewItemChannelId)) as ISocketMessageChannel;
                            }
                        }

                        if (annChannel != null)
                        {
                            var embed = await ItemHandler.CreateItemEmbed(newItemMessage.Item, Guild, _settingManager);

                            embed.Embed.Title = "New item found! - " + embed.Embed.Title;
                            await annChannel.SendFilesAsync(embed.Files, embed : embed.Embed.Build());
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Failed to parse GUILDCONFIG_ITEMDB_NEWITEMTYPES for guild {Guild.Id}, setting had value '{settingValue}'");
                    Console.WriteLine(ex.ToString());
                    throw;
                }
            }
        }